Linux系统C语言串口收发
Linux系统对串口提供了很好的支持,使我们很容易就能用C语言编写出串口收发程序。
先简单说明一下编写串口收发程序前的准备工作。首先串口收发需要有硬件上的串口,在Linux系统中串口是以ttySn(如ttyS0对应串口1,ttyS1对应串口2)文件的形式存放于/dev目录下的,因此我们会看到程序中将串口设备定义为char
*dev = "/dev/ttyS6";
。但是现在的笔记本电脑已经不再带有9针串口,因此我们需要一个USB转串口的工具。U转串的工具在Linux系统下会被识别成ttyUSBn文件,同样存在于/dev目录下。比如我虚拟机的Linux系统只连接了一个U转串,则/dev目录下就多出了一个ttyUSB0文件。
有了硬件的支持,我们还需要使用现有的工具测试一下,以便确定出问题时是我们的程序不行还是硬件不行。minicom是Linux系统下常用的串口工具,可以通过
sudo apt-get install minicom
命令安装(操作串口最好在root权限下,否则可能会提示无法打开串口)。安装完后输入
minicom -s
命令配置串口。需要配置Serial port setup选项中的Serial
Device为我们已有的串口,我的是ttyUSB0,因此这一项为
A - Serial
Device :
/dev/ttyUSB0
然后是波特率,我用115200,8位数据位,无奇偶校验,1位停止位,因此为
E - Bps/Par/Bits : 115200 8N1
之后去掉硬件流控(这个一般不需要)
F - Hardware Flow Control : No
然后保存退出即可
Save setup as dfl
输入minicom即可打开minicom,按ctrl+A,然后按Z可打开帮助菜单。如果出现
minicom: cannot open /dev/ttyUSB0:
没有那个文件或目录
而/dev目录下确实有ttyUSB0这个文件的话,对不起,重启Linux系统吧,重要提示,如果使用minicom时强制退出了,或运行自己写的程序时强制退出,而没有关闭串口,就可能出现串口无法使用的情况,这时可以看看/var/lock目录下是否有对应的lock文件,有就删了再试试,再不行就重启系统吧。如果你发现了不用重启就能解决的办法,非常欢迎能够教教我。
串口可以正常使用后就可以编写程序了!
***********************************************************