我有一个系统,其中一端我有一个设备通过 RS-232 与模块通信。该模块通过 TCP 连接到 PC,并将 TCP 消息转换为 RS-232,反之亦然。
我就是这样做的:
- 我读出了流中的每个字节
- 建立一个字符串
- 将字符串的后半部分与分隔符进行比较
- 然后我停止读取流(并触发一个事件,虽然这里没有显示)。
我目前处理这个的代码是
string delimiter = "\r\n";
byte[] reply = new byte[1];
string replyString = string.Empty;
bool readOk = true;
int dl = delimiter.Length;
bool delimiterReached = false;
do
{
try
{
stream.Read(reply, 0, 1);
}
catch (Exception e)
{
readOk = false;
break;
}
replyString += Encoding.ASCII.GetString(reply, 0, reply.Length);
int rl = replyString.Length;
if (rl > dl)
{
string endString = replyString.Substring(rl-dl, dl);
if (endString.Equals(delimiter))
delimiterReached = true;
}
} while (!delimiterReached);
stream
在哪里TcpClient.GetStream()
我不太关心不断的字符串构建,所以我想知道是否有更好的方法来做到这一点?