![]() |
[求助]关于串口编程的问题
这是一个简单的程序:
s=serial('com1'); set(s,'baudrate',9600); fopen(s); fprintf(s,'Hello, World!'); s.status fclose(s); s.status delete(s); clear s; 在这之前,我用SerialNull虚拟了一个COM2,同COM1相连,并用串口调试助手V2.2来打开COM2。 但运行结果总是: ??? Error using ==> serial.fprintf A timeout occurred during the write operation. Error in ==> Try at 4 fprintf(s,'Hello, World!'); 但此时在串口调试助手上已经显示:Hello, World! 我不知道这个timeout是什么意思,在这种波特率下,在默认的10秒钟内还传不完吗?我怀疑是terminator设置有异,使程序不能判断数据是否传输完成;因为我把能查出来的属性都对了一遍,只有这个属性在串口调试助手上没有说明——MATLAB默认值是'LF'。 我也搞不清这个timeout的作用。 请高手指教! |
接上,
而且,我现在也怀疑和防火墙是不是有关系。在后续的试验中,我实验了接收程序,即fscanf。结果是可以通过,但会有Warning,告知timeout,可结果好在不会中断程序。 请高手不吝赐教! |
现在,我对timeout并不怀疑,但我对terminator越发不信任。
我将默认值也输入到程序中(包括terminator为'LF'和在fprintf中的'%s\n')。可超时依旧,我用串口调试工具可以完全接收我发送的数据,包括换行符(\n),但是主程序还是在一直运行直到timeout。所以我觉得系统根本就没有去识别最后的一个换行符(\n)。 真是奇怪了~ |
所有时间均为北京时间。现在的时间是 06:35。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.