#pragma warning(disable: 4530) #pragma warning(disable: 4786) #include <iostream> #include <exception> using namespace std; #include <winsock2.h> #include <windows.h> #include "cnComm.h" //以下程序是每500ms送一次數據從COM1 到 COM2 //我沒有實際測試, 不在單位, 沒連接線 //不過我相信沒問題 //接收數據是在線程中 class MyComm : public cnComm//從cnComm擴展,自己處理 接受數據的 { public: //這是cnComm的虛函數, 供監視線程調用的, 監視線程一收到數據就會調用這個函數 //如果你是桌面應用就要發送自定義的窗口消息, 這是我在cnComm中默認用法 virtual void OnReceive() { char Buffer[256]; if(Read(Buffer, 256))//從串口讀數據 並打印在控制檯窗口 cout << "Receive Data Form " << _dwPort << " : " << Buffer << endl; } }; int main(int argc, char *argv[]) { try { //測試將PC的COM1 COM2相連測試 cnComm Com1(false, 0);//阻塞 串口1 用來發送數據 Com1.Open(1, 1200);//波特率1200 MyComm Com2;//繼承擴展使用 非阻塞 串口2 用來接受數據 Com2.Open(2, 1200); char Buffer[100] = {0}; for(int i = 0; i < 10; i++) { Sleep(500);//每500ms送一次 sprintf(Buffer, "這是第%d組數據 From COM1", i + 1); //這裏如果用異步,即非阻塞的讀寫方式, 函數會立即返回, 並且返回發送的字節數爲0 //實際的發送在系統的後臺進行 //我這裏用的是阻塞方式,爲的是你可以看到發送的過程, 和發送的字節數; //實際應用中一般用非阻塞(異步)的方式 cout << "COM1 Send Data " << Com1.Write(Buffer) << " Byte."<< endl; } Sleep(500); cout << "Exit..." << endl; Com1.Close(); } catch(exception &e) { cout << e.what() << endl; } return 0; }
原創串口類庫v2的使用範例,很簡單,高手勿入
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.