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);

关闭串口
关闭串口就是关闭文件。


close(fd);

例子
下面是一个简单的读取串口数据的例子,使用了上面定义的一些函数和头文件


/**********************************************************************代码说明:使用串口二测试的,发送的数据是字符,
但是没有发送字符串结束符号,所以接收到后,后面加上了结束符号。我测试使用的是单片机发送数据到第二个串口,测试通过。
**********************************************************************/
#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