Ⅰ 怎麼在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)使用串口了