原创串口类库v2的使用范例,很简单,高手勿入

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

有不少朋友来信问我上次发表的串口类库得使用方法;

我这里有个简单的程序, 有需要的朋友可以看一看;

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 COM" << _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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有