欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術頻道

基于VC++6.0的串口通信開發方法

1 引言

在當今的工業控制領域,串口通信是計算機與其他設備進行數據通信時經常使用的方法,具有實現簡單、使用靈活、數據傳輸可靠等幾個優點,特別是在實時監控系統中得到廣泛應用,在我們使用的計算機上使用的串口一般是RS232,使用RS232接口只能進行一對一的通信,然而在工業控制領域往往是一臺工控機和多臺智能設備進行通信,并且要求傳輸距離遠,因為這些需求,在工控領域一般使用RS485

Win32下,可以使用兩種編程方式實現串口通信,其一是使用MScomm控件,這種方法程序簡單,但欠靈活。其二是調用WindowsAPI函數,這種方法可以清楚地掌握串口通信的機制,并且自由靈活。使用控件的方法在本質上也是使用API進行串口通信,控件只不過是對API的一個封裝處理,本文只介紹使用API進行串口通信編程的方法。

2 串口通信的一般步驟

2.1 打開串口

32Windows中,串口和其他通信設備(如磁盤等)都被作為文件進行處理,在使用前必須先將其打開,為保證串口通信數據傳輸的可靠性,串口一般以非共享模式打開,也就是在被串口打開后,其他程序不能在去打開此設備。

2.2 配置串口

在使用串口進行數據通信前必須對其進行正確的配置,串口需要配置的主要參數有波特率、數據位、停止位、奇偶校驗、收發數據緩沖區大小。除此之外還要對串口進行超時設置,以防止在串口通信時數據傳輸突然中斷而導致讀寫操作進入無限期等待的狀態,設置了超時,如果在指定時間內沒有完成所進行的操作,則此操作被自動放棄。

2.3 讀寫串口

在串口被打開并設置好后,就可以使用串口進行讀寫數據了,讀寫數據可以采用同步、異步及事件驅動等多種方式。

2.4 關閉串口

在使用完串口后應該將其關閉,如果沒有關閉,該串口會處于打開狀態,其他的應用程序便無法打開使用該串口。

3 利用API函數實現串口通信

3.1 打開串口

Win32系統把文件的概念進行了擴展。無論是文件、通信設備、命名管道、郵件槽、磁盤、還是控制臺,都是用API函數CreateFile來打開或創建的。該函數的原型為:

HANDLE CreateFile(LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDistribution,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile);

各個參數說明如下:

lpFileName:將要打開的串口邏輯名,如“COM1

dwDesiredAccess:指定串口訪問的類型,可以是讀取、寫入或二者并列;

dwShareMode:指定共享屬性,由于串口不能共享,該參數必須置為0

lpSecurityAttributes:引用安全性屬性結構,缺省值為NULL

dwCreationDistribution:創建標志,對串口操作該參數必須置為OPEN_EXISTING

dwFlagsAndAttributes:屬性描述,用于指定該串口是否進行異步操作,該值為FILE_FLAG_OVERLAPPED,表示使用異步的I/O;該值為0,表示同步I/O操作;

hTemplateFile:對串口而言該參數必須置為NULL

3.2 配置串口

在打開通訊設備句柄后,常常需要對串口進行一些初始化配置工作。這需要通過一個DCB結構來進行。DCB結構包含了諸如波特率、數據位數、奇偶校驗和停止位數等信息。在查詢或配置串口的屬性時,都要用DCB結構來作為緩沖區。在打開串口后,可以調用GetCommState函數來獲取串口的默認配置,該函數獲取一個DCB結構體,只要在該結構內對應該先修改DCB結構,然后再調用SetCommState函數以修改后的DCB結構設置串口。DCB主要有以下幾個重要的成員:

BYTE ByteSize; // 通信字節位數

BYTE Parity; //指定奇偶校驗方法。此成員可以有下列值:

//EVENPARITY 偶校驗 NOPARITY 無校驗

//MARKPARITY 標記校驗 ODDPARITY 奇校驗

BYTE StopBits; //指定停止位的位數。此成員可以有下列值:

//ONESTOPBIT 1位停止位

//TWOSTOPBITS 2位停止位

//ONE5STOPBITS 1.5位停止位

除了使用BCD設置串口的一些基本參數外,一般還需要設置串口收發數據緩沖區的大小和超時,超時的作用是在指定的時間內沒有讀入或發送指定數量的字符,讀寫操作仍然會結束。WindowsI/O緩沖區來暫存串口輸入和輸出的數據,如果通信的速率較高,則應該設置較大的緩沖區。我們可以使用API函數SetupComm設置串口的輸入和輸出緩沖區的大小,其原型如下:

BOOL SetupComm(

HANDLE hFile, // 串口句柄

DWORD dwInQueue, // 輸入緩沖區的大小(字節數)

DWORD dwOutQueue ); // 輸出緩沖區的大小(字節數)

關于讀寫串口的超時設置,windows給我們提供一個專門的結構體COMMTIMEOUTS,其定義如下:

typedef struct _COMMTIMEOUTS {

DWORD ReadIntervalTimeout; //讀間隔超時

DWORD ReadTotalTimeoutMultiplier; //讀時間系數

DWORD ReadTotalTimeoutConstant; //讀時間常量

DWORD WriteTotalTimeoutMultiplier; //寫時間系數

DWORD WriteTotalTimeoutConstant; //寫時間常量

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

COMMTIMEOUTS結構的成員都以毫秒為單位。總超時的計算公式是:

總超時=時間系數×要求讀/寫的字符數+時間常量

例如,要讀入10個字符,那么讀操作的總超時的計算公式為:

讀總超時=ReadTotalTimeoutMultiplier×10ReadTotalTimeoutConstant

通過該結構體windowsAPI為我們提供兩個函數:GetCommTimeoutsSetCommTimeouts,前者獲取當前的超時設置,后者使用修改后的COMMTIMEOUTS設置超時,與設置串口闡述類似。

在讀寫串口之前,還要用PurgeComm()函數清空緩沖區,該函數原型:

BOOL PurgeComm(

HANDLE hFile, //串口句柄

DWORD dwFlags ); //需要完成的操作

參數dwFlags指定要完成的操作,可以是下列值的組合:

PURGE_TXABORT 中斷所有寫操作并立即返回,即使寫操作還沒有完成。

PURGE_RXABORT 中斷所有讀操作并立即返回,即使讀操作還沒有完成。

PURGE_TXCLEAR 清除輸出緩沖區

PURGE_RXCLEAR 清除輸入緩沖區

3.3 讀寫串口

讀寫串口使用ReadFileWriteFile兩個函數,其原型如下:

BOOL ReadFile(

HANDLE hFile, //串口的句柄

LPVOID lpBuffer, //保存讀入數據的指針

DWORD nNumberOfBytesToRead, //要讀入的數據的字節數

LPDWORD lpNumberOfBytesRead, //實際讀入的字節數

LPOVERLAPPED lpOverlapped ); //OVERLAPPED,同步為NULL

BOOL WriteFile(

HANDLE hFile, //串口的句柄

LPCVOID lpBuffer, //要寫入數據的地址

DWORD nNumberOfBytesToWrite, //要寫入數據的字節數

LPDWORD lpNumberOfBytesWritten, //實際寫入的字節數

LPOVERLAPPED lpOverlapped); //OVERLAPPED,同步為NULL

在進行同步操作時,讀寫函數要等到執行完才返回,而在異步操作時函數立即返回,但不保證讀寫操作完成,這時候就需要使用OVERLAPPED結構進行異步控制,該結構體有一個重要的成員hEvent,該成員是windows事件對象的句柄在控制線程同步及異步操作時常用到,如果是異步操作,我們可以使用CreateEvent(…)創建事件對象并將返回值賦給hEvent,然后使用WaitForSingleObjectGetOverlappedResult等待讀寫操作完成,進而達到控制異步操作的目的。

3.4 關閉串口

在不使用串口的時候應該將其關閉,以釋放windows的資源供其他程序使用,關閉串口只需調用CloseHandlehComm/*串口句柄*/)即可。

4 串行通信在世紀星組態軟件中的應用

作為通用的組態軟件,世紀星要與其他PLC、智能儀表等設備進行通信,串行通信是主要的方式之一,基于前面所述使用API進行串行通信開發的優點,并考慮程序開發的便捷和可重用等,在世紀星中,我們將串行通信API進行封裝,以類的方式對串口進行操作,其中打開串口及配置串口參數的操作我們通過可視化窗口進行設定,然后在封裝類中實現,相關的操作處理讀寫數據外基本都已實現,因為不同的設備有不同的協議,因而讀寫串口的操作在驅動程序中完成,這樣我們的開發人員就不必關注太多其他的相關操作,只需根據實際設備重寫讀寫串口的成員函數即可。

5 結論

Windows是當前應用程序開發的主流平臺,VC++6.0是該平臺強大的開發工具,使用windowsAPI開發串口通信的程序可使我們更加清晰的了解串口通信的機制,并且開發人員可以根據需要使用API進行靈活的程序設計,在SCADA中串行通信是必不可少的技術,所以掌握串行通信的開發方法具有現實意義。

文章版權歸西部工控xbgk所有,未經許可不得轉載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      9000px;">

          日韩一区二区三区免费看| 东方aⅴ免费观看久久av| 51精品久久久久久久蜜臀| 日本电影欧美片| 日韩免费一区二区三区在线播放| 日本中文在线一区| 日韩美女视频在线| 韩国精品在线观看| 国产精品乱人伦中文| 色屁屁一区二区| 久久国产欧美日韩精品| 国产精品美女一区二区在线观看| 一本到三区不卡视频| 亚洲大片精品永久免费| 久久久久久电影| 精品视频在线免费观看| 国产精品一区二区三区乱码| 亚洲精品成人精品456| 在线观看日韩高清av| 亚洲综合无码一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 国产一区美女在线| 亚洲精品你懂的| 久久久不卡影院| 欧美喷水一区二区| av在线一区二区三区| 丝袜美腿一区二区三区| 欧美国产精品一区二区| 欧美顶级少妇做爰| 日本电影欧美片| 成人高清av在线| 国产一区欧美二区| 日韩国产精品久久| 亚洲午夜久久久久久久久电影网 | 久久精子c满五个校花| 国产精品自拍三区| 在线免费观看成人短视频| 极品美女销魂一区二区三区免费| 一区二区三区在线不卡| 久久久欧美精品sm网站| 欧美一区二区国产| 欧美巨大另类极品videosbest | 激情综合网av| 亚洲午夜久久久| 亚洲色图.com| 亚洲欧美福利一区二区| 国产精品少妇自拍| 国产网站一区二区| 久久夜色精品一区| 日韩免费看的电影| 日韩一区二区在线播放| 日韩一区二区三区四区| 4438x亚洲最大成人网| 欧美日韩1234| 在线不卡中文字幕播放| 欧美美女激情18p| 欧美一区二区三区影视| 日韩一级免费观看| 久久一区二区三区四区| 国产亚洲欧美一级| 国产精品理论片| 亚洲美女淫视频| 亚洲va欧美va天堂v国产综合| 亚洲国产精品麻豆| 日韩高清不卡一区二区| 久久国产精品99久久久久久老狼| 日韩福利视频导航| 国产综合一区二区| 成人黄色在线看| 在线视频综合导航| 欧美一区二区视频观看视频| 日韩免费看的电影| 欧美国产欧美亚州国产日韩mv天天看完整| 国产欧美日韩精品在线| 亚洲日本中文字幕区| 亚洲成人综合网站| 国产精品综合久久| 欧美亚洲高清一区| 精品欧美一区二区三区精品久久| 国产日韩欧美精品综合| 夜色激情一区二区| 久久精品国产一区二区三| 国产a视频精品免费观看| 在线这里只有精品| 欧美精品一区二区三区高清aⅴ| 综合中文字幕亚洲| 蜜臀av国产精品久久久久| 国产成人免费视频一区| 91蜜桃视频在线| 精品国产91乱码一区二区三区 | 91九色02白丝porn| 精品久久久三级丝袜| 日韩理论在线观看| 美女视频黄a大片欧美| 97国产精品videossex| 精品久久久久99| 亚洲第一成人在线| 成人黄色一级视频| 欧美tk丨vk视频| 午夜精品一区二区三区免费视频| 国产一区二区导航在线播放| 欧美日韩电影在线| 一区二区三区在线观看网站| 国产成人一区在线| 精品日韩av一区二区| 亚洲国产日韩一区二区| 成人免费视频国产在线观看| 欧美va亚洲va在线观看蝴蝶网| 天天色图综合网| 91欧美一区二区| 国产精品视频你懂的| 成人免费高清在线| 国产精品伦理一区二区| 国产精品白丝在线| 免费成人结看片| 精品国产三级a在线观看| 亚洲乱码国产乱码精品精的特点 | 性感美女久久精品| 99re8在线精品视频免费播放| 久久综合九色综合欧美亚洲| 视频在线观看国产精品| 欧美日本乱大交xxxxx| 亚洲午夜精品网| 欧美日韩激情在线| 亚洲 欧美综合在线网络| 91国偷自产一区二区开放时间| 中文字幕亚洲成人| 国产喂奶挤奶一区二区三区| 精品剧情v国产在线观看在线| 亚洲欧洲99久久| 成人手机电影网| 中文字幕一区二区三区在线不卡| 国产丶欧美丶日本不卡视频| 久久久精品欧美丰满| 国产麻豆成人传媒免费观看| 26uuu久久天堂性欧美| 国产伦精品一区二区三区免费 | 综合网在线视频| 99久免费精品视频在线观看 | 欧美午夜不卡在线观看免费| 一区二区三区蜜桃网| 欧美午夜视频网站| 青青草原综合久久大伊人精品| 欧美一区二区三区在线观看视频| 另类小说色综合网站| 国产亚洲精品资源在线26u| 成人爽a毛片一区二区免费| 日韩美女啊v在线免费观看| 欧美性受xxxx黑人xyx性爽| 五月婷婷激情综合| 精品国偷自产国产一区| 波多野结衣中文字幕一区 | 亚洲成av人综合在线观看| 日韩一区二区三区电影在线观看 | 美女网站色91| 国产精品久久久久一区二区三区共| 91一区二区三区在线观看| 日本欧洲一区二区| 国产精品对白交换视频 | 成人污视频在线观看| 亚洲国产精品视频| 久久久99久久精品欧美| 91国偷自产一区二区三区观看| 日本强好片久久久久久aaa| 亚洲国产高清aⅴ视频| 欧美日韩三级在线| 成人午夜av电影| 日本不卡不码高清免费观看| 国产精品久久久久aaaa| 欧美一区午夜精品| 色欧美日韩亚洲| 国产精品亚洲成人| 日本vs亚洲vs韩国一区三区| 中文字幕一区免费在线观看| 精品国产亚洲一区二区三区在线观看| 成人听书哪个软件好| 久久成人久久爱| 日韩精品91亚洲二区在线观看| 亚洲人成网站色在线观看| 久久亚洲精华国产精华液| 欧美三区在线观看| 91香蕉视频污| 国产传媒日韩欧美成人| 捆绑紧缚一区二区三区视频| 久久久国产午夜精品 | 国产精品国产三级国产| 久久超级碰视频| 午夜激情一区二区三区| 国产色产综合产在线视频| 日韩欧美国产一区二区三区 | 91精品久久久久久蜜臀| 一本一道久久a久久精品综合蜜臀| 国产盗摄女厕一区二区三区| 另类的小说在线视频另类成人小视频在线| 一区二区欧美国产| 亚洲青青青在线视频| 国产视频911| 国产清纯白嫩初高生在线观看91| 精品国产一区二区在线观看| 欧美精品免费视频|