一般电脑只有2个串口,这个串口是板载的
创新互联建站成立与2013年,先为高密等服务建站,高密等地企业,进行企业商务咨询服务。为高密企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
而你说有10个,那可能是加装了插卡,现在的PCI转串口的卡有2串口和4串口之分,可能你加装了两块4串口的
当然还有一种程序就叫作虚拟串口,这种程序可以将USB的信号转为9针的串口信号或是将TCP协议转为232串口协议等
================================
工控机也不可能带有10个串口,而PC机的硬件里面自身就包含有2个串口,不管是不是能看的见这2个串口,所以在安装主板驱动时,这2个串口的驱动也被安装了
而其它的真实串口只能是加装的其它硬件,也就是说它不包含在你的电脑主板内。那么,它的驱动也就需要另外安装,大部分硬件都提供WINDOWS下的驱动安装,当前流行的就是XP系统
而你要在LINUX下使用这个硬件,就必须安装它的驱动
从你LINUX下看看硬件安装这儿吧,一定会有没安装的硬件
因为在你XP系统下或是安装了硬件的驱动也或是安装了虚拟串口的程序,而在LINUX下是不好找这种第三方驱动或是XP下的程序
不过LINUX自身好像就支持一个虚拟串口的程序,但我对LINUX了解不多,你可以自己找找看
1.使用ls -l ttyS*命令显示如下
crw-rw----. 1 root dialout 4, 64 5月 17 02:24 /dev/ttyS0
crw-rw----. 1 root dialout 4, 65 5月 17 02:24 /dev/ttyS1
crw-rw----. 1 root dialout 4, 66 5月 17 02:24 /dev/ttyS2
crw-rw----. 1 root dialout 4, 67 5月 17 02:24 /dev/ttyS3
但你不知到哪个是真实的串口,虽然一般都是ttyS0,但也不敢妄然确定。
2.使用cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:unknown port:000002F8 irq:3
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3
我们发现串口0的uart值时16550A,tx值为0,rx值也为0,因此我们断定本机只有一个串口,是串口0,即ttyS0
3.也可以用dmesg | grep ttyS*,但这个不是很好用,当然你可以自己使用正则法则取找到。
注意:还应查看是否有USB转串口,这个就很简单了:ls ttyUSB*,全部搞定。
在linux下查看串口可以用dmesg命令,参考下图: 上图中显示有两个串口,com1=0x3f8,com2=0x2f8 对应linux设备名称是ttyS0和ttyS1
你open俩串口就OK了
至于转发数据的话 你read一个串口的数据在buf里 判断是否转发的 是的话就write buf到另一个串口里 很简单
int com0_fd = open(...) ;
int com1_fd = open(...) ;
tcgetattr() tcsetattr()....
.....
char buf[1024] ;
int length = read(com0_fd , buf , 1024) ;
判断是否转发的
是的话
write(com1_fd , buf, length);
当然 实际写的时候不是这么简单的流程 你可能给俩串口开俩线程 用锁来控制同步 通过全局数据结构体传递数据 串口的读函数可能会用到select等。
dmidecode
dmesg
这两个可以列出系统的所有硬件信息.
如果这两条指令还看不到的那就只能打开机箱看了