煮酒论坛

 找回密码
 申请新用户
搜索
热搜: 活动 交友 discuz
查看: 4328|回复: 4

[原创]求救!

[复制链接]
发表于 2005-11-11 15:39:05 | 显示全部楼层 |阅读模式



关于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系统下用串口调试精灵是可以通信的。

请大家指教啊!!!

发表于 2005-11-11 21:34:46 | 显示全部楼层
我没做过windows应用,但返回-1一般表示你没正常读到值,而发生了错误。
 楼主| 发表于 2006-6-16 05:56:41 | 显示全部楼层
怎么好象还是没有人能给出正确答案~~呵呵~
郁闷~~
觉得应该是错在调试的时候~~应该是错误在1吧~~`[em11]
发表于 2006-6-19 10:46:17 | 显示全部楼层
#include <unistd.h>

        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 增加,增量为实际读取到的字节数。
发表于 2006-6-19 10:47:41 | 显示全部楼层
不知道上面的答案你还满意?
您需要登录后才可以回帖 登录 | 申请新用户

本版积分规则

小黑屋|手机版|Archiver|守望轩 ( 湘ICP备17013730号-2 )|网站地图

GMT+8, 2018-4-20 13:15 , Processed in 0.035006 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表