我有一个应用程序要求我将一个4-10 ASCII字符串发送到RS422 Uart串行接收器。问题是Uart缓冲区最多只能接收2bytes 10ms左右。如何解析数据并以块的形式发送,而不会在另一方面超时。
正常的serial.write()方法溢出缓冲区,每次发送任何内容时都会从设备收到错误响应。该器件指定的波特率为19200,但也说我写的数据需要一次间隔2个字节。设备没有奇偶校验,握手或流量控制支持。
基本上我想做这样的事情:
private void sendData(string text)
{
string textnew = text +(char)13;
byte[] r_bytes = Encoding.ASCII.GetBytes(textnew);
if (SeriialComms.IsOpen)
{
for (int i = 0; i > (textnew.Length/2); i = i + 2)
{
byte[] bytesToSend = { r_bytes[i], r_bytes[i+1] };
SerialComms.Write(bytesToSend, 0, 2);
System.Threading.Thread.Sleep(10);
}
}
}
这是可能的,有更简单的方法吗?