发新话题
打印

[原创]求救!

[原创]求救!




关于window和linux串口通信的问题



……
int readnum=0;
readnum=read(fd,buff,512);
while(readnum>0)
{
printf("the data are :%s",buff);
}
……
//fd是打开串口返回的整数,buff是是字符型数组

语句简单化了就这样,

读取串口函数read的返回值是读取到的字符的数目,
遇错返回-1,

我写的程序readnum的返回值是-1.请问-1的返回值表示什么意思?
是没收到数据还是表示没读取到数据?

请教各位可能是什么方面出了问题啊???

设置了串口号和波特率后,串口在window系统下用串口调试精灵是可以通信的。

请大家指教啊!!!

理性的思维 张扬的个性

TOP

我没做过windows应用,但返回-1一般表示你没正常读到值,而发生了错误。

TOP

怎么好象还是没有人能给出正确答案~~呵呵~
郁闷~~
觉得应该是错在调试的时候~~应该是错误在1吧~~`[em11]
理性的思维 张扬的个性

TOP

#include ssize_t read(int filedes, void *buf, size_t nbytes); 返回值:读取到的字节数;0(读到 EOF);-1(出错) read 函数从 filedes 指定的已打开文件中读取 nbytes 字节到 buf 中。以下几种情况会导致读取到的字节数小于 nbytes : A. 读取普通文件时,读到文件末尾还不够 nbytes 字节。例如:如果文件只有 30 字节,而我们想读取 100 字节,那么实际读到的只有 30 字节,read 函数返回 30 。此时再使用 read 函数作用于这个文件会导致 read 返回 0 。 B. 从终端设备(terminal device)读取时,一般情况下每次只能读取一行。 C. 从网络读取时,网络缓存可能导致读取的字节数小于 nbytes 字节。 D. 读取 pipe 或者 FIFO 时,pipe 或 FIFO 里的字节数可能小于 nbytes 。 E. 从面向记录(record-oriented)的设备读取时,某些面向记录的设备(如磁带)每次最多只能返回一个记录。 F. 在读取了部分数据时被信号中断。 读操作始于 cfo 。在成功返回之前,cfo 增加,增量为实际读取到的字节数。
无情未必真豪杰,怜子如何不丈夫!

TOP

不知道上面的答案你还满意?
无情未必真豪杰,怜子如何不丈夫!

TOP

发新话题