linux下多串口的问题?

linux下多串口的问题?,第1张

你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等。

@ toc

可在控制台输入

也可以用stty设置串口参数

使用后相当于串口回传,发什么回什么

发送数据

可以对串口发送数据比如对com1口

一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS* ,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的;

如果有ttyS设备,再看/dev/有没有ttyS*,如没有就建立一个:

如果板子的设备中没有标准串口设备ttyS0,也没有ttySAC0。/dev下应该有一个USB串口:/dev/ttyUSB0.

当一个串行卡或数据卡被侦测到时,它会被指定成为第一个可用的串行设备。通常是/dev/ttyS1(cua1)或/dev/ttyS2(cua2),这完成看原已内建的串口数目。ttyS*设备会被报告在/var/run/stab内。

PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC

可能是linux下的串口设备没有打开,需要改变串口设备

的权限,或者根据文章头添加用户到组处理

可以通过以下命令 查看 板子上的硬件端口的内核设备名

该条命令会将 ttyUSB0所对应的硬件端口的kernel设备名 显现出来, 得到KERNEL== '1-5.5.4', 而不是之前的ttyUSB0

cmd.sh如下:

./getUSB.py 调用当前路径下的getUSB.py这个Python语言,明确此次是哪个,ttyUSB0,或者ttyUSB1挂载在端口3-1.1上

getUSB.py:

完成之后 ,设置开机启动cmd.sh(在/etc/rc.local中设置)则每次开机之后,会从/dev/ttydata获取到固定端口的数据

方式一

写入内容如下:

方式二

我的硬件序列号:ATTRS{serial}=="FTSYWCXZ"这个号是唯一的

可以通过/dev/usb_0打开串口设备

常用的匹配类型:

一个用python语言写的一个简易程序,能够实现虚拟串口通讯

下面是源代码:

#! /usr/bin/env python

#coding=utf-8

import pty

import os

import select

def mkpty():

#

master1, slave = pty.openpty()

slaveName1 = os.ttyname(slave)

master2, slave = pty.openpty()

slaveName2 = os.ttyname(slave)

print '\nslave device names: ', slaveName1, slaveName2

return master1, master2

if __name__ == "__main__":

master1, master2 = mkpty()

while True:

rl, wl, el = select.select([master1,master2], [], [], 1)

for master in rl:

data = os.read(master, 128)

print "read %d data." % len(data)

if master==master1:

os.write(master2, data)

else:

os.write(master1, data)

保存为VirtualComTest.py

在命令行中输入 python VirtualComTest.py &

然后会返回虚拟串口的设备地址


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8963821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存