本書(shū)的目的是向讀者介紹如何把傳統(tǒng)的串口通信在網(wǎng)絡(luò)上實(shí)現(xiàn),包括局域網(wǎng)和互聯(lián)網(wǎng)。首先介紹串口RS-232和RS-485的出現(xiàn)和發(fā)展,串口通信的原理和通信及編程;然后介紹以太網(wǎng)和互聯(lián)網(wǎng)的通信協(xié)議TCP/IP,以及它與串口之間的通信和編程;*后重點(diǎn)介紹幾種通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)串口通信的途徑,包括使用瀏覽器、基于云路由器和即時(shí)通信軟件、用Java的跨平臺(tái)語(yǔ)言等。書(shū)中的大部分內(nèi)容為作者多年從事串口通信的研究成果及市場(chǎng)分析,并且加上了美國(guó)的*網(wǎng)絡(luò)通信技術(shù)。難能可貴的是,本書(shū)首次把作者的具有專利技術(shù)的互聯(lián)網(wǎng)串口通信技術(shù)的軟件源代碼,以及在美國(guó)的先進(jìn)的研究成果予以公開(kāi),僅供讀者學(xué)習(xí)和研究。
前 言
串行口簡(jiǎn)稱串口,可以說(shuō),人類文明史就是一部串行通信史。所謂有文明的標(biāo)志就是有文字記載,而文字只能一個(gè)字一個(gè)字地寫(xiě)和讀,這就是一種串行通信。相對(duì)于文字和聲音是串行的,圖像就算是并行的。我們不能一目十行地閱讀文字,也不能同時(shí)聽(tīng)多個(gè)聲音并加以識(shí)別,卻能夠一眼看盡全幅圖像的上下左右。與文字信息相比,人類文明歷史上幾乎沒(méi)有留下圖像信息。耳朵聽(tīng)到的聲音在每一時(shí)刻只能有一個(gè)音符或者發(fā)音,連貫起來(lái)就是音樂(lè)或者語(yǔ)音,這就是我們?cè)诮邮沾行畔ⅰN覀冎v話,每一瞬間只能講一個(gè)語(yǔ)音,這就是我們?cè)诎l(fā)送串行信號(hào)。樂(lè)譜或者文字就是串行通信的信息。今天我們?yōu)榱吮阌诶斫獯型ㄐ偶夹g(shù),經(jīng)常打比方就像我們?cè)谥v話溝通一樣。比如,只能有一個(gè)人講話(只能有一個(gè)主機(jī)或服務(wù)器),可以有多個(gè)人聽(tīng)(多個(gè)從機(jī)或客戶端)。講話之前,先稱呼人名,這里的人名就相當(dāng)于從機(jī)或客戶端的地址。講完一段話需要不時(shí)停頓,就相當(dāng)于信號(hào)的空閑狀態(tài)。
中國(guó)古代的狼煙信號(hào)是最早的典型的二進(jìn)制串行通信,在長(zhǎng)期的停頓信號(hào)無(wú)狼煙(可以理解為0-無(wú)敵情)的間隔后,突然點(diǎn)燃狼煙(可以理解為信號(hào)1-有敵情),這就有效地傳遞了一位二進(jìn)制信息:1代表有狼煙,同時(shí)也代表有敵情。但是在烽火戲諸侯這個(gè)故事中,周幽王為了讓褒姒開(kāi)心,取悅褒姒,點(diǎn)燃了烽火臺(tái),將眾多諸侯都戲弄了一番,果然褒姒覺(jué)得有趣,就哈哈大笑起來(lái),后來(lái)由于褒姒因?yàn)橛X(jué)得很有意思,就多次點(diǎn)燃烽火臺(tái)戲弄眾多諸侯,造成后來(lái)諸侯們都不相信周幽王的信號(hào)了。這是因?yàn)榘丫幋a信號(hào)弄混亂了,本來(lái)是1表示有敵情換成了1表示無(wú)敵情,導(dǎo)致信號(hào)混亂而無(wú)法正常通信。古希臘的馬拉松為了傳遞一個(gè)簡(jiǎn)單的信息1(我們贏了),連續(xù)跑了40多公里而累倒了。千年后,愛(ài)迪生用火車的汽笛來(lái)遠(yuǎn)程傳輸二進(jìn)制信號(hào),用長(zhǎng)音(代表1)和短音(代表0)組合可以傳輸英文字母的ASCII字符信息。至今我們?nèi)匀荒軌蚵?tīng)見(jiàn)用輪船的汽笛聲表示到港或離港等信息。現(xiàn)在我們?cè)诨ヂ?lián)網(wǎng)上看到的文字、語(yǔ)音、圖像等信息仍然是通過(guò)串行通信來(lái)傳輸?shù)模袝r(shí)候網(wǎng)速很慢地打開(kāi)一個(gè)圖像,才慢慢地顯示清晰,你就會(huì)懂得什么是串行通信。
互聯(lián)網(wǎng)是當(dāng)今的高新技術(shù)。人類文明的未來(lái)不一定就是現(xiàn)在定義的互聯(lián)網(wǎng),但一定是更加緊密的互聯(lián)關(guān)系。早期的人類局限在一個(gè)部落內(nèi)的交流,一般不會(huì)超過(guò)400個(gè)人,這也是我們今天的人所能夠記得的人名的上限。但是今天借助互聯(lián)網(wǎng),在我們的朋友圈和朋友的朋友圈等,我們已經(jīng)大大地拓展了我們互聯(lián)的人數(shù)。今天世界人口大約70億,假設(shè)平均每人認(rèn)識(shí)100個(gè),理論上只要經(jīng)過(guò)5個(gè)人的朋友圈的接力就可以到1005=100億,也就是可以認(rèn)識(shí)全世界的人。人類發(fā)展的歷史也是越來(lái)越人口密集,同時(shí)分工更細(xì)、聯(lián)系更加緊密的過(guò)程,如果這種聯(lián)系可以稱為網(wǎng)絡(luò),那么人類的未來(lái)還是更加緊密的互聯(lián)網(wǎng)絡(luò)。本書(shū)的副標(biāo)題借用馬克思《共產(chǎn)黨宣言》扉頁(yè)上的一段文字全世界無(wú)產(chǎn)者,聯(lián)合起來(lái)!我改寫(xiě)為全世界串行口,聯(lián)網(wǎng)起來(lái)!
可以說(shuō),互聯(lián)網(wǎng)等網(wǎng)絡(luò)串口通信把人類文明的未來(lái)與歷史聯(lián)系了起來(lái),但是本書(shū)還遠(yuǎn)沒(méi)有寫(xiě)盡這個(gè)宏偉的過(guò)程。作者只是把串行口的通信從需要專門的布線到借助互聯(lián)網(wǎng)進(jìn)行通信的發(fā)展過(guò)程進(jìn)行了一個(gè)簡(jiǎn)單的串行的描述。串行口通信在最近幾十年內(nèi)造就了多個(gè)世界五百?gòu)?qiáng)的企業(yè)或者業(yè)界巨頭:Bell、Motorola、IBM、Hayes、MAXIM等。由于本書(shū)引用或涉及了許多公司或個(gè)人的產(chǎn)品和軟件,比如CAYEE、ZLG、BOSHIKA、zhaojun、張海瑞等,我們一并表示感謝,感謝大家的支持和幫助。如果本書(shū)能夠在串行通信的歷史上留下一點(diǎn)小小的火花,我們就已經(jīng)很滿足了。如果有建議或者意見(jiàn),歡迎聯(lián)系作者:592905661@qq.com(周云波)和Swchou435@gmail.com(Shiwei Zhou)。
作 者
2017年7月
周云波,男,1966年10月出生,現(xiàn)居武漢。華中科技大學(xué)教師,博士。曾經(jīng)在北京航天研究院學(xué)習(xí)和工作。從事過(guò)軍工測(cè)控系統(tǒng)的研發(fā)、數(shù)字電路的教學(xué)與科研,串口通信的研究與開(kāi)發(fā),獲得國(guó)家專利十多項(xiàng),在國(guó)內(nèi)外雜志發(fā)表論文十多篇。
目 錄
第1章 串口通信接口介紹1
1.1 串口RS-232介紹2
1.1.1 RS-232接口的電氣特性及物理結(jié)構(gòu)3
1.1.2 異步通信與同步通信及其格式4
1.1.3 RS-232傳輸電纜長(zhǎng)度5
1.1.4 RS-232的實(shí)際應(yīng)用5
1.1.5 RS-232接口的缺點(diǎn)及克服7
1.2 RS-485和RS-422簡(jiǎn)介8
1.2.1 什么是RS-485接口8
1.2.2 什么是RS-422接口9
1.3 串口RS-422與RS-485的工程應(yīng)用10
1.3.1 RS-422與RS-485傳輸線上匹配的一些說(shuō)明11
1.3.2 RS-422與RS-485的接地問(wèn)題11
1.3.3 RS-422與RS-485的網(wǎng)絡(luò)失效保護(hù)12
1.3.4 串口RS-485的新發(fā)展14
1.4 USB串口通信產(chǎn)品的發(fā)展15
1.4.1 第一代產(chǎn)品:USB/RS-232轉(zhuǎn)換器15
1.4.2 第二代產(chǎn)品:USB/RS-485/RS-422轉(zhuǎn)換器16
1.4.3 第三代產(chǎn)品:光電隔離USB/RS-232/485/422轉(zhuǎn)換器17
1.4.4 第四代產(chǎn)品:USB/串口光纖轉(zhuǎn)換器18
1.4.5 第五代產(chǎn)品:USB網(wǎng)絡(luò)串口轉(zhuǎn)換器18
1.4.6 USB虛擬串口的評(píng)論21
1.5 用單片機(jī)I/O口軟件模擬串口及實(shí)現(xiàn)遠(yuǎn)程通信22
1.5.1 TTL電平轉(zhuǎn)換成差分電平的純軟件方法22
1.5.2 軟件串行口的實(shí)現(xiàn)原理23
1.5.3 軟件串行通信的編程24
第2章 串口通信的軟件編程27
2.1 串口調(diào)試助手軟件的使用27
2.1.1 一個(gè)串口的自己發(fā)送自己接收27
2.1.2 一臺(tái)計(jì)算機(jī)的兩個(gè)串口之間的通信28
2.1.3 兩臺(tái)計(jì)算機(jī)的兩個(gè)串口之間的通信29
2.2 串口通信與擴(kuò)展的調(diào)試軟件29
2.2.1 4232A框內(nèi)的串口擴(kuò)展功能37
2.2.2 DIZ4232框內(nèi)的串口擴(kuò)展功能38
2.2.3 無(wú)串口擴(kuò)展功能的簡(jiǎn)化的串口通信軟件40
2.3 帶串口自動(dòng)打開(kāi)等功能的串口調(diào)試軟件40
2.4 超高速的串口調(diào)試軟件59
2.4.1 如何判斷USB/串口轉(zhuǎn)換器本身是否支持921.6 kbps波特率59
2.4.2 如何實(shí)現(xiàn)USB/串口轉(zhuǎn)換器的921.6 kbps波特率通信60
第3章 TCP/IP通信軟件編程62
3.1 TCP/IP通信的硬件連接62
3.2 TCP/IP測(cè)試工具軟件的使用65
3.3 簡(jiǎn)單的VB的Winsock聊天程序?qū)嵗?8
3.4 用VC 編寫(xiě)的Winsock聊天程序?qū)嵗?5
第4章 通過(guò)局域網(wǎng)實(shí)現(xiàn)串口通信84
4.1 基于局域網(wǎng)的純軟件串口即時(shí)通信84
4.2 通過(guò)以太網(wǎng)/串口轉(zhuǎn)換器實(shí)現(xiàn)串口通信107
4.3 串口信號(hào)通過(guò)以太網(wǎng)傳輸112
4.4 通過(guò)Wi-Fi/串口轉(zhuǎn)換器實(shí)現(xiàn)串口通信114
4.5 以太網(wǎng)串口通信產(chǎn)品的發(fā)展方向118
4.5.1 有線以太網(wǎng)向無(wú)線升級(jí)118
4.5.2 百兆向千兆以太網(wǎng)升級(jí)120
4.5.3 串口從電口到光纖的升級(jí)120
4.5.4 以太網(wǎng)從電口到光纖的升級(jí)121
4.5.5 單串口向多串口的發(fā)展122
4.5.6 虛擬串口軟件的標(biāo)準(zhǔn)化122
第5章 通過(guò)瀏覽器實(shí)現(xiàn)串口通信124
5.1 基于瀏覽器的遠(yuǎn)程串口控制器125
5.2 基于瀏覽器的云串口通信軟件128
5.3 基于瀏覽器的Java串口編程原理簡(jiǎn)介130
5.4 基于瀏覽器的云串口通信的網(wǎng)頁(yè)源代碼及解釋131
5.5 IE瀏覽器通過(guò)MSCOMM控件與串口外設(shè)通信的工程實(shí)例142
5.6 基于云串口服務(wù)器的互聯(lián)網(wǎng)串口通信前景144
第6章 通過(guò)路由器實(shí)現(xiàn)互聯(lián)網(wǎng)串口通信148
6.1 基于路由器的互聯(lián)網(wǎng)串口通信的原理148
6.2 已預(yù)先內(nèi)置DDNS域名的云無(wú)線路由器150
6.2.1 功能特點(diǎn)150
6.2.2 硬件連接151
6.2.3 上網(wǎng)機(jī)器的設(shè)置151
6.2.4 無(wú)線網(wǎng)絡(luò)配置152
6.2.5 虛擬服務(wù)(端口映射)和DMZ152
6.2.6 路由器軟件功能界面152
6.3 基于專門云路由器的互聯(lián)網(wǎng)串口通信的實(shí)現(xiàn)153
6.3.1 本地計(jì)算機(jī)的設(shè)置153
6.3.2 以太網(wǎng)/串口轉(zhuǎn)換器的設(shè)置154
6.3.3 云串口通信測(cè)試及虛擬串口154
6.4 基于需要安裝花生殼DDNS的無(wú)線路由器156
6.4.1 域名申請(qǐng),并將其與無(wú)線路由器綁定156
6.4.2 檢測(cè)動(dòng)態(tài)域名是否正常156
6.4.3 端口映射158
6.4.4 串口聯(lián)網(wǎng)設(shè)備的配置158
6.4.5 啟動(dòng)服務(wù)器,等待串口聯(lián)網(wǎng)設(shè)備的連接請(qǐng)求159
6.5 利用無(wú)線路由器本身的串口159
6.5.1 用OpenWrt修改無(wú)線路由器的程序159
6.5.2 用OpenWrt燒寫(xiě)無(wú)線路由器的程序170
6.5.3 基于AR9331的OpenWrt 路由器核心模塊177
第7章 用即時(shí)通信軟件實(shí)現(xiàn)互聯(lián)網(wǎng)串口通信179
7.1 基于即時(shí)通信軟件的串口控制器180
7.2 好靈通即時(shí)通信:串口遠(yuǎn)程通信的革命184
7.3 互聯(lián)網(wǎng)版好靈通串口即時(shí)通信軟件的代碼及解釋185
7.3.1 主窗體[frmMain(Client.frm)]窗體的源代碼188
7.3.2 登錄界面[frmLog(Log.frm)]窗體的源代碼199
7.3.3 登錄成功之后的界面[frmLogin(Login.frm)]的代碼201
7.3.4 通信界面窗體[frmChat(Chat.fra)]的源代碼203
7.3.5 接收文件窗體[frmReceiveFile(ReceiveFile.frm)]的源代碼209
7.3.6 發(fā)送文件窗體[frmSendFile(SendFile.frm)]213
7.3.7 自動(dòng)調(diào)整界面大小的窗體[frmTip(Tip.frm)]217
7.3.8 顯示版本信息的窗體[frmTip(Tip.frm)]219
7.4 用于互聯(lián)網(wǎng)串口即時(shí)通信的USB/串口轉(zhuǎn)換器220
7.4.1 硬件和驅(qū)動(dòng)程序安裝220
7.4.2 好靈通串口即時(shí)通信軟件的配合使用221
7.4.3 典型應(yīng)用223
7.5 Wi-Fi串口即時(shí)通信使物聯(lián)網(wǎng)成為現(xiàn)實(shí)224
第8章 智能手機(jī)或平板電腦的互聯(lián)網(wǎng)227
8.1 智能手機(jī)或平板電腦互聯(lián)網(wǎng)串口通信的原理227
8.2 智能手機(jī)或平板電腦的設(shè)置228
8.3 互聯(lián)網(wǎng)/串口轉(zhuǎn)換器的設(shè)置229
8.4 智能手機(jī)或平板電腦互聯(lián)網(wǎng)串口通信測(cè)試230
8.5 安卓智能手機(jī)的USB/串口轉(zhuǎn)換器及互聯(lián)網(wǎng)串口通信230
8.6 帶USB-OTG功能的部分平板電腦互聯(lián)網(wǎng)串口通信232
8.7 智能手機(jī)的藍(lán)牙-串口轉(zhuǎn)換器及互聯(lián)網(wǎng)串口通信233
8.7.1 為計(jì)算機(jī)藍(lán)牙擴(kuò)展無(wú)線串口(從模式)235
8.7.2 為安卓智能手機(jī)藍(lán)牙擴(kuò)展無(wú)線串口(從模式)235
8.7.3 為蘋(píng)果智能手機(jī)藍(lán)牙擴(kuò)展無(wú)線串口236
8.7.4 無(wú)線串口透明傳輸(一個(gè)主模式,另一個(gè)從模式)237
8.7.5 BLU232的設(shè)置指令237
8.8 基于FT312D的安卓智能手機(jī)USB轉(zhuǎn)串口設(shè)計(jì)238
8.8.1 FT312D接口芯片及其硬件連接239
8.8.2 FT312D的USB轉(zhuǎn)串口的軟件開(kāi)發(fā)240
8.8.3 FT312D串口通信代碼示例241
8.9 智能手機(jī)的基于音頻傳輸?shù)幕ヂ?lián)網(wǎng)串口通信243
第9章 用Java實(shí)現(xiàn)互聯(lián)網(wǎng)串口通信246
9.1 使用Javax.comm對(duì)串口通信進(jìn)行編程246
9.1.1 Javax.comm簡(jiǎn)介246
9.1.2 下載247
9.1.3 安裝247
9.1.4 API247
9.1.5 實(shí)例248
9.1.6 安裝Java Communications API252
9.1.7 硬件的準(zhǔn)備252
9.1.8 Comm API基礎(chǔ)252
9.1.9 通信方式254
9.1.10 完整的程序257
9.2 使用Java Socket對(duì)TCP/IP通信進(jìn)行編程263
9.2.1 Java關(guān)于TCP/IP通信的Socket添加庫(kù)介紹263
9.2.2 簡(jiǎn)單的客戶端到服務(wù)器單方向TCP/IP信息傳輸264
9.3 本地串口通過(guò)TCP/IP 傳輸?shù)竭h(yuǎn)端串口275
9.3.1 將串口讀入數(shù)據(jù)輸出到TCP/IP275
9.3.2 將TCP/IP得到的數(shù)據(jù)傳輸?shù)酱?80
9.4 基于Linux服務(wù)器的互聯(lián)網(wǎng)串口通信283
9.4.1 Linux環(huán)境的設(shè)定與連接283
9.4.2 連接283
9.4.3 遠(yuǎn)端文件的視覺(jué)化傳輸285
參考文獻(xiàn)287