如何使用原创串口类库v2?
有不少朋友来信问我上次发表的串口类库得使用方法;
我这里有个简单的程序, 有需要的朋友可以看一看;
cnComm.h见http://blog.csdn.net/wujian53/archive/2004/10/23/148385.aspx
#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; }
本文地址:http://www.45fan.com/a/luyou/68551.html