一、基本概念说明
串口(串行通信接口),是指采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,(说白了就是排好队,一个一个来,类似队列)其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
但是由于串口(COM)不支持热拔插及传输速率较低,大部分便携式电脑已经取消该接口。目前串口多用于工控和测量设备以及部分通信设备中。
串口通常意义上分为:
1. 同步串行接口(SSI),多用于工业通信。
2.异步串行借口 也就是我们熟悉的UART(Universial Asynchronous Receiver/Transimitter),翻译过来也就是通用异步接受/发送。UART是一个并行输入成为串行输出的芯片,它将要传输的资料在串行通信与并行通信之间加以转换。UART包含TTL电平的串口,和RS232电平的串口。TTL电平是5V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。
串行接口按照电气标准和协议可分为:(常用标准)
RS232:
RS422
标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。典型的RS-422是四线接口。实际上还有一根信号地线,共5根线。其DB9连接器引脚定义。由于接收器采用高输入阻抗和发送 驱动器比RS232更强的 驱动能力,故允许在相同传输线上连接多个接收 节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。
可以说是RS422升级版,同上都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。
(此处概念整理网上资料,不是很详细,想要详细了解,可自行Google、百度,一搜一大堆资料~~~~~)
二、LInux 下串口编程初识
Linux 下串口编程实际上可视作对某个文件的各种操作(主要因为Linux下一切皆文件),既然都说是文件的那么对一个文件的操作,难免有打开,写入,读取,关闭等一系列的操作。
在Linux环境下接口文件主要存在于/dev目录下可通过:
cd /dev //进入dev目录 ls
显示如下:
其中的ttys0,ttys1 .....就是我们今天的主角。