Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 串行端口编程-识别接收数据的结束_Visual C++_Serial Port - Fatal编程技术网

Visual c++ 串行端口编程-识别接收数据的结束

Visual c++ 串行端口编程-识别接收数据的结束,visual-c++,serial-port,Visual C++,Serial Port,我正在用VC++编写一个串口应用程序,在这个程序中,我可以在交换机设备上打开一个端口,发送一些命令并显示它们的输出。我正在运行一个线程,它总是为给定命令的输出读取开放端口。我的主线程等待读取完成,但问题是我如何识别命令输出结束,我应该向主线程发送信号 几乎任何串行端口通信都需要协议。接收器发现已完全接收到响应的某种方式。一个非常简单的方法是使用唯一的字节或字符,这些字节或字符永远不会出现在其余数据中。linefeed是标准的,例如任何调制解调器都可以使用 当您需要传输任意二进制数据时,这需要更加

我正在用VC++编写一个串口应用程序,在这个程序中,我可以在交换机设备上打开一个端口,发送一些命令并显示它们的输出。我正在运行一个线程,它总是为给定命令的输出读取开放端口。我的主线程等待读取完成,但问题是我如何识别命令输出结束,我应该向主线程发送信号

几乎任何串行端口通信都需要协议。接收器发现已完全接收到响应的某种方式。一个非常简单的方法是使用唯一的字节或字符,这些字节或字符永远不会出现在其余数据中。linefeed是标准的,例如任何调制解调器都可以使用


当您需要传输任意二进制数据时,这需要更加详细。一个常见的解决方案是首先发送响应的长度。然后,接收器可以倒计时接收到的字节,以知道何时完成。这通常需要用一个特定的起始字节值来修饰,以便接收机有机会与发射机重新同步。通常包括校验和或CRC,以便接收器能够检测传输错误。然后,进一步的修饰是使用来自接收器的ACK/NAK响应使错误可恢复。那你就可以重新发明TCP了。RFC-916中的RATP协议是一个很好的例子,尽管被广泛忽略。

这是一个问题,因为输出的可变性。除非有等待的理由,否则只需在接收到的字符到达时或每隔x毫秒显示一次。