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下調試串口,發送十六進制數據
串口發送的數據是8位的,最大為255,就是FF,如果要發送大於255的數,必須變成幾個位元組發送,例如要發送十進制2315,就要將數據拆分 data(0)=2315/256; data(1)=2315%256; 這樣就拆分開數據,再將數據發送出去。
⑶ linux c 串口 收發數據
1、接受數據一般是阻塞,就是沒有接收到數據就一直等待,可以設置為不阻塞,這樣就可以了
2、另一種方法是,創建線程,一收、一發,就可以互不影響
⑷ 請教,怎麼向linux下串口發送16進制數比如0xFA之類的
在程序中打開你的串口設備,int fd; fd = open("/dev/ttyS1",O_RDWD);
比如你要發送0x01,0x02,0x03,0x04,
char buf[256]={0x01,0x02,0x03,0x04};
write(fd,buf,4);
直接往你的串口寫四個位元組的數就可以了,在你的另一個程序中讀取你往串口寫的那幾個數,十六進制列印出來就可以了。
⑸ 求助:Linux下C語言如何向串口發送16進制數據
Linux特點是所有都是文件
包括串口設備
首先 找到你串口對應的設備 一般是 /dev/ttyS1
當然 也可能是別的 需要你自己確認硬體。
然後比如你要發送0x01,0x02,0x03,0x04,
intfd;fd=open("/dev/ttyS1",O_RDWD);
charbuf[256]={0x01,0x02,0x03,0x04};
write(fd,buf,4);
close(fd);
這樣就可以了。
⑹ linux串口收到數據和windows串口收到的不一樣
你好,中文亂碼的話,注意接收後可能需要編碼轉換,比如GB2312,utf8,unicode這幾種編碼格式的轉換
如果不是中文的話,可以按照下面方式進行檢查
1、具體檢查方法,將linux中的發送和接受進行短接(就是將發送和接受連起來),看看接受的數據是否相同。
這一步中,因為使用的是同一個串口,所以串口的設置一定是相同的。這樣如果都收不正確,可以確定是linux串口驅動的問題。
2、詳細設置linux串口的參數,包括波特率,校驗,串口位數。將linux和單片機設置相同,看看接受數據是否相同
如果還是不相同。
3、在windows中使用串口調試助手設置同單片機串口相同的參數,查看接受數據是否正確。
如果不正確,說明是單片機串口參數設置的問題,或者是時鍾頻率的問題。
如果正確,說明一定是linux端的問題。
如果是linux端的問題,主要從兩個方面解決,一個是參數設置,一個是信息讀取。下面是測試方法。
4linux端查看一下代碼設置。利用驅動介面,讀出串口的參數,看看和你程序中設置的參數是否相同,如果不相同說明設置參數的代碼沒寫對。
5如果參數設置是正確的,那麼直接cat 驅動的位置,可以直接讀出串口的數據,此時讀取的數據應該是和發送端一樣的,如若不一樣。。。。那麼基本就是linux時鍾的問題導致的了。若linux是PC上的一般不會出現時鍾設置錯誤,如果linux是嵌入式上的話,你看看時鍾配置是否正確吧