我能使用串口或GPIB发送NULL字符吗?



主要软件:
主要软件版本: 6.0
主要软件修正版本: N/A
次要软件: N/A

问题: 我正尝试着发送一个NULL字符到我的仪器上但是没能成功。我能通过LabVIEW, LabWindows™/CVI, Visual C, Visual Basic等发送一个NULL字符吗?

解答: 可以,您可以使用任意的语言通过串口发送并接收NULL字符。您可能因为您处理字符串的方式而没有发送或接收到字符。所有的字条串都以NULL字符来结尾,那么,字符串函数认为NULL字符是一个字符串的末尾,即使NULL字符在信息的中心也是如此。

例如,下面的代码将从串口仅发送"hello",因为StringLength在字符串中遇到NULL字符并以字符串结束的方式中断这个字符。

char send_data[15] = "hello\00world";
stringsize = StringLength (send_data); // stringsize = 5
ComWrt (comport, send_data, stringsize); // "hello" is sent over serial

如果您希望NULL是用结束一段串行消息,您无需再添加NULL字符。NULL字符已经在字符串中了。您只需增加发送的字符数。

char send_data[15] = "hello";
stringsize = StringLength (send_data)++; // stringsize = 6
ComWrt (comport, send_data, stringsize); // "hello/0" is sent over serial

您能在名为serial.prj的范例中使用NULL结尾,其位于您LabWindow/CVI安装文件的samples\rs232目录中,将进程SendAscii和回调函数ReadCallBack 替换为所附的代码。当用户为结尾字节或结尾字符选择"None"时,它们将得到一个NULL。

相关链接: KnowledgeBase 2VDB8MHM: Why Do Serial Reads Only Return Data Up to Hex 00, Decimal 0, or ASCII NULL?

附件:


Modified_code.txt - Modified_code.txt


报告日期: 08/21/2003
最近更新: 10/10/2013
文档编号: 30K7GUWH