和文件一樣,open /dev/ttyS0就是串口1 然后設(shè)置波特率,停止位 奇偶校驗(yàn)?zāi)切?,之后read write就可以了 頭文件是termios.h
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括三河網(wǎng)站建設(shè)、三河網(wǎng)站制作、三河網(wǎng)頁制作以及三河網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,三河網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到三河省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
linux 提供了各種工具, Linux 使用 ttySx 作為一個(gè)串口設(shè)備的名稱。例如,COM1 (DOS/Windows 名字) 是 ttyS0, COM2 是 ttyS1 等等。
任務(wù): 顯示檢測到的系統(tǒng)串口支持
簡單的運(yùn)行 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 是一個(gè)程序用于設(shè)定并/或報(bào)告某個(gè)串口關(guān)聯(lián)的配置信息。該信息包括串口用到的I/O 端口和中斷號(hào),以及Break鍵是否應(yīng)被解釋為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選項(xiàng)的setserial幫助找到你的Linux板子上的物理串口。
Linux 串口控制臺(tái)程序
一旦串口被確定了,你就能使用許多的工具來配置Linux板子:
minicom- 用于控制modem和連接到dump 設(shè)備的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一個(gè)內(nèi)建智能PPP 撥號(hào)器。
getty / agetty - agetty 打開一個(gè) tty 端口, 提示登錄名稱并調(diào)用 /bin/login 命令。
grub / lilo configuration - 配置串口為系統(tǒng)控制臺(tái)。
要滿足這三個(gè)條件:
1,單開線程自動(dòng)寫at
2,單開線程讀at
3,打開文件讀配置,將讀出來后的配置文件放到log文件里去。
這邊記錄下如何在ui下開一個(gè)線程的過程:用一個(gè)handler變量調(diào)用handler.post函數(shù),然后在runnable里面重寫run接口就可以,實(shí)際上,這樣調(diào)用出來的線程跟ui主線程是一個(gè)線程,不會(huì)創(chuàng)建新的。所以這邊如果要用線程創(chuàng)建的話,必須
wthread = new HandlerThread("thread");
wthread.start();
wHandler = new Handler(wthread.getLooper());
wHandler.post(runnable);
這時(shí)重寫runnable的run函數(shù)才可以實(shí)現(xiàn)重新開啟一個(gè)線程。
在這個(gè)線程里面可以讀寫串口,但是界面的刷新不能在這個(gè)子線程里面做。必須主線程在做一個(gè)handler,然后子線程調(diào)用Message 變量傳進(jìn)主線程的handler.sendMessage(msg);然后主線程用handlerMessage接收子線程傳過來的消息,在主線程里面刷新界面。