我是 C# 和串行通信领域的新手。阅读了一些教程后,我设法使通信正常工作。我在这里问了另一个类似的问题,但我认为我问的问题不正确。我遵循了上一个问题中给出的建议并稍微更改了我的代码,以便我现在从我的微控制器发送一条看起来像这样的串行消息:
SxxxxxxxxxxxxxxxxxxxxxxxxE
x 代表不同的数字,加号和减号以及逗号。我发送的字符串将始终具有相同的长度,并且始终以 S 开头并以 E 结尾(如果这不好,我可以更改它)。我遇到的问题是,当我尝试读取串行线路时,我一次只能收到部分消息,所以是这样的:
Sxxxxxxx
xxxxx
xxxxESxxx
我从微控制器连续发送此信息,但只想在特定时间访问它,所以换句话说,我正在尝试编写一个函数来接收消息的所有部分,将其放回一起,然后从我的功能。问题是我现在不知道该怎么做。
任何帮助将不胜感激!
这是我一直在玩的代码:
SerialPort serialHC = new SerialPort(); // serial connection dealing with Hand Controller
public string receiveCommandHC()
{
string messageHC = "";
if (serialHC.IsOpen)
{
//serialHC.DiscardInBuffer();
//messageHC = serialHC.ReadLine();
messageHC = serialHC.ReadTo("*");
//tempMsgHC = serialHC.ReadTo("*");
//i = tempMsgHC.IndexOf("S");
//tempMsgHC.Remove(0,i);
//messageHC = tempMsgHC;
//serialHC.Read(bufferHC = new byte[serialHC.BytesToRead], 0, serialHC.BytesToRead);
}
return messageHC;
我曾经让消息的结尾是“*”
刚刚尝试按照这里的示例进行操作,这就是我从中得到的。
这就是我要发送的内容(使用 Putty 进行检查)