Linux特點(diǎn)是所有都是文件
在富源等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需策劃設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站建設(shè),富源網(wǎng)站建設(shè)費(fèi)用合理。
包括串口設(shè)備
首先 找到你串口對(duì)應(yīng)的設(shè)備 一般是 /dev/ttyS1
當(dāng)然 也可能是別的 需要你自己確認(rèn)硬件。
然后?比如你要發(fā)送0x01,0x02,0x03,0x04,
int?fd;?fd?=?open("/dev/ttyS1",O_RDWD);
char?buf[256]={0x01,0x02,0x03,0x04};
write(fd,buf,4);
close(fd);
這樣就可以了。
在程序中打開(kāi)你的串口設(shè)備,int fd; fd = open("/dev/ttyS1",O_RDWD);
比如你要發(fā)送0x01,0x02,0x03,0x04,
char buf[256]={0x01,0x02,0x03,0x04};
write(fd,buf,4);
直接往你的串口寫(xiě)四個(gè)字節(jié)的數(shù)就可以了,在你的另一個(gè)程序中讀取你往串口寫(xiě)的那幾個(gè)數(shù),十六進(jìn)制打印出來(lái)就可以了。
希望通過(guò)串口發(fā)送一段數(shù)字。
如輸入03020100,其中03代表指令包長(zhǎng)度,02代表指令碼,01代表要將LED燈點(diǎn)亮,00表示指令結(jié)束。
如果我發(fā)送的指令是0602015005000102030400,就表示我的整條指令長(zhǎng)度06第一個(gè)指令碼02第一條指令01,第二條指令碼50,要讀的數(shù)的長(zhǎng)度05要讀的數(shù)為0001020304,最后結(jié)束指令00。
@ toc
可在控制臺(tái)輸入
也可以用stty設(shè)置串口參數(shù)
使用后相當(dāng)于串口回傳,發(fā)什么回什么
發(fā)送數(shù)據(jù)
可以對(duì)串口發(fā)送數(shù)據(jù)比如對(duì)com1口
一般情況下串口的名稱(chēng)全部在dev下面,如果你沒(méi)有外插串口卡的話(huà)默認(rèn)是dev下的ttyS* ,一般ttyS0對(duì)應(yīng)com1,ttyS1對(duì)應(yīng)com2,當(dāng)然也不一定是必然的;
如果有ttyS設(shè)備,再看/dev/有沒(méi)有ttyS*,如沒(méi)有就建立一個(gè):
如果板子的設(shè)備中沒(méi)有標(biāo)準(zhǔn)串口設(shè)備ttyS0,也沒(méi)有ttySAC0。/dev下應(yīng)該有一個(gè)USB串口:/dev/ttyUSB0.
當(dāng)一個(gè)串行卡或數(shù)據(jù)卡被偵測(cè)到時(shí),它會(huì)被指定成為第一個(gè)可用的串行設(shè)備。通常是/dev/ttyS1(cua1)或/dev/ttyS2(cua2),這完成看原已內(nèi)建的串口數(shù)目。ttyS*設(shè)備會(huì)被報(bào)告在/var/run/stab內(nèi)。
PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC
可能是linux下的串口設(shè)備沒(méi)有打開(kāi),需要改變串口設(shè)備
的權(quán)限,或者根據(jù)文章頭添加用戶(hù)到組處理
可以通過(guò)以下命令 查看 板子上的硬件端口的內(nèi)核設(shè)備名
該條命令會(huì)將 ttyUSB0所對(duì)應(yīng)的硬件端口的kernel設(shè)備名 顯現(xiàn)出來(lái), 得到KERNEL== '1-5.5.4', 而不是之前的ttyUSB0
cmd.sh如下:
./getUSB.py 調(diào)用當(dāng)前路徑下的getUSB.py這個(gè)Python語(yǔ)言,明確此次是哪個(gè),ttyUSB0,或者ttyUSB1掛載在端口3-1.1上
getUSB.py:
完成之后 ,設(shè)置開(kāi)機(jī)啟動(dòng)cmd.sh(在/etc/rc.local中設(shè)置)則每次開(kāi)機(jī)之后,會(huì)從/dev/ttydata獲取到固定端口的數(shù)據(jù)
方式一
寫(xiě)入內(nèi)容如下:
方式二
我的硬件序列號(hào):ATTRS{serial}=="FTSYWCXZ"這個(gè)號(hào)是唯一的
可以通過(guò)/dev/usb_0打開(kāi)串口設(shè)備
常用的匹配類(lèi)型:
要滿(mǎn)足這三個(gè)條件:
1,單開(kāi)線(xiàn)程自動(dòng)寫(xiě)at
2,單開(kāi)線(xiàn)程讀at
3,打開(kāi)文件讀配置,將讀出來(lái)后的配置文件放到log文件里去。
這邊記錄下如何在ui下開(kāi)一個(gè)線(xiàn)程的過(guò)程:用一個(gè)handler變量調(diào)用handler.post函數(shù),然后在runnable里面重寫(xiě)run接口就可以,實(shí)際上,這樣調(diào)用出來(lái)的線(xiàn)程跟ui主線(xiàn)程是一個(gè)線(xiàn)程,不會(huì)創(chuàng)建新的。所以這邊如果要用線(xiàn)程創(chuàng)建的話(huà),必須
wthread = new HandlerThread("thread");
wthread.start();
wHandler = new Handler(wthread.getLooper());
wHandler.post(runnable);
這時(shí)重寫(xiě)runnable的run函數(shù)才可以實(shí)現(xiàn)重新開(kāi)啟一個(gè)線(xiàn)程。
在這個(gè)線(xiàn)程里面可以讀寫(xiě)串口,但是界面的刷新不能在這個(gè)子線(xiàn)程里面做。必須主線(xiàn)程在做一個(gè)handler,然后子線(xiàn)程調(diào)用Message 變量傳進(jìn)主線(xiàn)程的handler.sendMessage(msg);然后主線(xiàn)程用handlerMessage接收子線(xiàn)程傳過(guò)來(lái)的消息,在主線(xiàn)程里面刷新界面。