Linux下串口编程入门(三)
发表于:2007-07-04来源:作者:点击数:
标签:
读写串口 设置好串口之后,读写串口就很容易了,把串口当作文件读写就是。 发送数据 char buffer[1024];int Length;int nByte;nByte = write(fd, buffer ,Length) 读取串口数据 使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函
读写串口
设置好串口之后,读写串口就很容易了,把串口当作文件读写就是。
- 发送数据
clearcase/" target="_blank" >cccccc"> char buffer[1024];int Length;int nByte;nByte = write(fd, buffer ,Length)
|
- 读取串口数据
使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函数返回的字符数是实际串口收到的字符数。
可以使用操作文件的函数来实现异步读取,如fcntl,或者select等来操作。
char buff[1024];int Len;int readByte = read(fd,buff,Len);
|
关闭串口
关闭串口就是关闭文件。
例子
下面是一个简单的读取串口数据的例子,使用了上面定义的一些函数和头文件
/**********************************************************************代码说明:使用串口二测试的,发送的数据是字符, 但是没有发送字符串结束符号,所以接收到后,后面加上了结束符号。我测试使用的是单片机发送数据到第二个串口,测试通过。 **********************************************************************/ #define FALSE -1 #define TRUE 0 /*********************************************************************/ int OpenDev(char *Dev) { intfd = open( Dev, O_RDWR ); //| O_NOCTTY | O_NDELAY if (-1 == fd) { perror("Can't Open Serial Port"); return -1; } else return fd; } int main(int argc, char **argv){ int fd; int nread; char buff[512]; char *dev = "/dev/ttyS1"; //串口二 fd = OpenDev(dev); set_speed(fd,19200); if (set_Parity(fd,8,1,'N') == FALSE) { printf("Set Parity Errorn"); exit (0); } while (1) //循环读取数据 { while((nread = read(fd, buff, 512))>0) { printf("nLen %dn",nread); buff[nread+1] = ''; printf( "n%s", buff); } } //close(fd); // exit (0); }
|
参考资料
- Serial Programming Guide for POSIX Operating Systems
- Linux 的源代码
- 代码下载: 代码
关于作者
左锦,就职南沙资讯科技园,喜爱 Linux,Java 还有蓝天白云青山绿水。通过 zuo170@163.com 和他联系。
原文转自:http://www.ltesting.net