Ⅰ 怎么在linux下通过串口通信啊树莓派!
首先是你的平台是什么(cpu),用ioremap函数映射相关寄存器地址,然后就设置串口(uart)寄存器。我只会ARM平台,linux下串口的驱动。
Ⅱ Linux串口相关的操作及绑定
@ 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打开串口设备
常用的匹配类型:
Ⅲ linux ssh 怎么端口映射
本地端口映射(Local Port Forwarding):
目标:将本地端口的数据转发到远端端口
应用场景:当我内们需要拥有公网IP的远程主机做跳板,登陆到与远程主机同一个局域网的容一台非公网IP机器时,可以在公网IP的远程主机做本地端口映射,转发到非公网IP机器上。这样就只要一次ssh到公网IP主机做了映射的端口就登陆到非公网IP主机上了。
远端端口映射(Remote Port Forwarding):
目标:将远端端口的数据转发到本地端口
应用场景:局域网主机可以通过公网IP访问远程主机,但是反过来的时候,如果不建立VPN,则可以通过在局域网机器上做远端端口映射,这样通过公网机器就能直接ssh到局域网机器。
动态端口映射(Dynamic Port Forwarding):
目标:充当SOCKS代理
应用场景:在浏览器中访问某些受局域网防火墙限制的网页时,就可以通过在本地机器做动态端口映射,代理到未受限制的主机上去访问。
Ⅳ Linux端口映射
可以。请参考下面的设定:
【实现功能】
PC A是
eth0 172.18.10.212 内网
eth1 219.239.xx.xx 外网
PC B是 172.18.10.205 内网
A的8080端口映射到B的80端口
【步骤】
1、 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0
这样允许iptalbes FORWARD。
2、 在/etc/rc.d/init.d目录下有iptables 文件,使用格式如下
Usage: ./iptables {start|stop|restart|condrestart|status|panic|save}
相当与service iptables {....}
把iptables 服务停止,清除以前的规则,存盘
到/etc/rc.d/init.d目录下,运行
./iptables stop
iptalbes -F
iptalbes -X
iptalbes -Z
./iptables save
3、 重新配置规则
iptables -t nat -A PREROUTING -d 219.239.xx.xx -p tcp --dport 8080 -j DNAT --to-destination 172.18.10.205:80
iptables -t nat -A POSTROUTING -d 172.18.10.205 -p tcp --dport 80 -j SNAT --to 172.18.10.212
iptables -A FORWARD -o eth0 -d 172.18.10.205 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -s 172.18.10.205 -p tcp --sport 80 -j ACCEPT
DNAT SNAT 的请参考帮助,这里不再陈述。
4、 新的规则存盘
./iptables save
规则存盘后在/etc/sysconfig/iptables这个文件里面,若你对这个文件很熟悉
直接修改这里的内容也等于命令行方式输入规则。
5、 启动iptables 服务
./iptables start
在/proc/net/ip_conntrack文件里有包的流向,如下面
tcp 6 53 TIME_WAIT src=../../221.122.59.2 dst=219.239.xx.xx sport=7958 dport=8080 packets=9 bytes=1753
src=../../172.18.10.205 dst=172.18.10.212 sport=80 dport=7958 packets=9 bytes=5777 [ASSURED] use=1
Ⅳ Linux下端口映射问题
这个是你的防火墙阻止了你对49988端口的访问,你可以用一下命令解决你的版问题
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT #允许访问本机3306tcp端口
iptables -t nat -A PREROUTING -p tcp --dport 49988 -j DNAT --to 61.X.X.X:3306 #将对权本机的49988映射到3306
最后保存,再开机也会生效
Ⅵ linux串口无法配置波特率
我们用一条交叉网线把NPort5110 和PC机的网口连接起来,并把NPort上电。
首先,打开控制面板,网络连接。
在本地连接上点右键,选择属性。
双击进入 Internet协议(TCP/IP),点击“使用下面的IP地址”
写入 IP 地址和子网掩码,记住要和NPORT 的IP 地址在同一子网段内。如NPORT 默认IP
为192.168.127.254,255.255.255.0;就需要把PC 机的IP 地址设为192.168.127.XXX,
255.255.255.0,最后一个数字不同即可。
点击确定。
第二章:网络和串口参数配置
搜索 NPort
打开NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此
时请确认网络防火墙已经关闭。
会搜索到我们的NPort5110,点击stop,停止搜索。
网络参数配置
双击右边空白处的NPort 设备,会出现以下界面,点击选择Network 选项卡,点击Modify
修改。可以看到以下界面:
我们可以在里面修改NPort的以下参数:
IPAddress:IP地址。
Netmask:子网掩码。
Gateway:网关。
IP Configuration:可以配置为静态IP(Static),或者为DHCP(动态IP)。
DNS Server1和2:DNS,域名解析服务器。
串口参数配置
点击 Serial选项卡,点击Modify修改,双击端口进去,可以看到以下界面:
我们可以在里面修改以下参数:
Baud Rate:波特率,NPort5000 系列只能支持标准波特率,如9600,115200bps 等。
Parity:校验。
None:无校验
Even:偶校验。
Odd:奇校验。
Space:空。
Mark:标志。
Data Bits:数据位。
Stop Bits:停止位。
Flow Control:流量控制。
None:无流量控制。
XON/XOFF:软件流控。
RTS/CTS:硬件流控。
FIFO:64bit先进先出,为了降低CPU负载,提高设备性能。可以选择Enable启用,或Disable
禁用。
Interface:可选择RS232,RS422,RS485 2线,或者RS485 4线。(NP5110 只能为RS232)
设置好后,点击OK,设置保存,设备重新启动。
第三章:操作模式设置
Real COM映射端口
打开 NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此
时请确认网络防火墙已经关闭。
会搜索到我们的NPort5110,点击stop,停止搜索。
双击右边的5110,选择Operating Mode选项卡,确认为Real COM模式:
点击左边的第四项:COM MAPPING,
再点击Add
点击“OK”,
点击“Apply”保存
点击“Yes”,点击“OK”。
这样,端口就映射好了。
TCP Server模式的设置(用软件)
打开 NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此
时请确认网络防火墙已经关闭。
会搜索到我们的NPort5110,点击stop,停止搜索。如果打开防火墙,可以使用Search IP,
在下面选项框里输入NPort的IP地址,
点击 OK,就可以搜索到NPort设备。
双击右边的NP5110,切换到OperatingMode选项卡,点击Modify,双击进去。可以把模式
修改成TCP Server 模式。
里面的名词解释:
Local TCP Port:本地数据端口,指的是NP5110 的数据端口。
Command Port:NP5110 的命令端口。
Max Connection:最大连接数,也就是说同时最大可以有几台上位机采集到下面串口设备
的数据,NPort5000 系列最大是4 个,NPort6000 和CN2600 系列是8 个。
当最大连接数为2 或以上的时候,右边的选项Allow Driver Control 和Ignore Jammed IP会开
启。
Allow Driver Control:当最大连接数为2 或以上时,且此功能打开时,上位机A 需要以
4800bps打开串口,上位机B需要以9600bps打开串口,是可以的。如果此功能关闭,则波
特率需以固件中的设置一致。
Ignore Jammed IP:当最大连接数为2 或以上时,且此功能打开时,其中一台上位机A死
机,上位机B 依然可以正常接收数据。如果此功能关闭,则上位机B 也不能收到串口的数
据了。
Ⅶ 如何在linux上使用串口设备
简单的运行 dmesg 命令
$ dmesg | grep tty
输出:
[ 37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A
setserial 命令
setserial 是一个程序用于设定并/或报告某个串口关联的配置信息。该信息包括串口用到的I/O 端口和中断号,以及Break键是否应被解释为Secure Attention Key 等等。 仅仅是输出如下的命令:
$ setserial -g /dev/ttyS[0123]
输出:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
带-g选项的setserial帮助找到你的Linux板子上的物理串口。
Linux 串口控制台程序
一旦串口被确定了,你就能使用许多的工具来配置Linux板子:
minicom- 用于控制modem和连接到mp 设备的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一个内建智能PPP 拨号器。
getty / agetty - agetty 打开一个 tty 端口, 提示登录名称并调用 /bin/login 命令。
grub / lilo configuration - 配置串口为系统控制台。
Ⅷ linux系统中串口如何通讯
这个难实现,试试iptables的转发思路能用吗专?
转发TCP 8081到属xx.xx.xx.xx:
#iptables -t nat -I PREROUTING -p tcp –dport 8081 -j DNAT –to xx.xx.xx.xx
Ⅸ Linux串口连接ttyS0、ttyS1是什么意思
这是通信串口名称。
在Linux环境下,串口名从ttyS0开始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作为通信串口。在打开ttyS0的时候,选项 O_NOCTTY 表示不能把本串口当成控制终端,否则用户的键盘输入信息将影响程序的执行; O_NDELAY表示打开串口的时候,程序并不关心另一端 的串口是否在使用中。在Linux中,打开串口设备和打开普通文件一样,使用的是open()系统调用。比如我么打开串口设备1也就是COM1,只需要:
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );
打开的串口设备有很多设置选项。本文中使用int setup_com(int fd)设置。在系统头文件中 定义了终端控制结构struct termios,tcgetattr()和tcsetattr()两个系统函数获得和设置这些属性。结构 struct termios中的域描述的主要属性包括:
c_cflag : 控制选项
c_lflag : 线选项
c_iflag : 输入选项
c_oflag :输出选项
c_cc :控制字符
c_ispeed :输入数据波特率
c_ospeed :输出数据波特率
如果要设置某个选项,那么就使用"|=“运算,如果关闭某个选项就使用”&=“和”~"运算。本文使用的各个选项的意义定义如下:
c_cflag:
CLOCAL 本地模式,不改变端口的所有者
CREAD 表示使能数据接收器
PARENB 表示偶校验
PARODD 表示奇校验
CSTOPB 使用两个停止位
CSIZE 对数据的bit使用掩码
CS8 数据宽度是8bit
c_lflag:
ICANON 使能规范输入,否则使用原始数据(本文使用)
ECHO 回送(echo)输入数据
ECHOE 回送擦除字符
ISIG 使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信号
c_iflag:
IXON 使能输出软件控制
IXOFF 使能输入软件控制
IXANY 允许任何字符再次开启数据流
INLCR 把字符NL(0A)映射到CR(0D)
IGNCR 忽略字符CR(0D)
ICRNL 把CR(0D)映射成字符NR(0A)
c_oflag: OPOST 输出后处理,如果不设置表示原始数据(本文使用原始数据)
c_cc[VMIN]: 最少可读数据
c_cc[VTIME]: 等待数据时间(10秒的倍数)
Ⅹ linux怎么判断串口接收到数据
虚拟机中的串口连接可以采用两种方法。一种是指定虚拟机的串口连接到实际的COM上,例如开发机连接到COM1,目标机连接到COM2,然后把两个串口通过串口线相连接。另一种更为简便的方法是:在较高一些版本的VMware中都支持把串口映射到命名管道,把两个虚拟机的串口映射到同一个命名管道。例如,在两个虚拟机中都选定同一个命名管道 \\.\pipe\com_1,指定target机的COM口为server端,并选择"The other end is a virtual machine"属性;指定development机的COM口端为client端,同样指定COM口的"The other end is a virtual machine"属性。对于IO mode属性,在target上选中"Yield CPU on poll"复选择框,development机不选。
串口是开发者经常要使用到的,我们有些时候需要使用windows开发,然而window装在了虚拟机中,我们怎么样在虚拟机中使用串口呢?
1、在virtualbox中选择启用串口,端口模式选择Host device.
由于现有两个系统但是只有一个物理串口,所以虚拟机要通过主机的串口文件间接获取数据,主机是linux,串口设备为/dev/ttyS0
2、端口/文件位置一栏填入:/dev/ttyS0,启动虚拟机。
3、如果无法启动虚拟机,很有可能是没有对ttyS0设备的读写权限,(可以ls -l /dev/ttyS0查看以下权限)于是我们要修改ttyS0的权限,在终端中输入:sudo chmod 777 /dev/ttyS0 这样就将ttyS0的所有权限都打开了。启动虚拟机,这时候就可以在虚拟机中(winXP)使用串口了