⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux2.txt

📁 介绍linux串口设计,以及具体串口模块功能设计等,分为两部分,此为第一部分
💻 TXT
字号:
需要注意的是:

如果不是开发终端之类的,只是串口传输数据,而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通讯,设置方式如下:

 options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /*Input*/options.c_oflag &= ~OPOST; /*Output*/ 
 

读写串口
设置好串口之后,读写串口就很容易了,把串口当作文件读写就是。

发送数据  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){int fd = 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 Error");exit (0);}while (1) //循环读取数据{ while((nread = read(fd, buff, 512))>0){ printf("Len %d",nread); buff[nread+1] = ''; printf( "%s", buff); }}//close(fd); // exit (0);}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -