45fan.com - 路饭网

搜索: 您的位置主页 > 手机频道 > 阅读资讯:如何使用原创串口类库v2?

如何使用原创串口类库v2?

2016-08-27 19:56:25 来源:www.45fan.com 【

如何使用原创串口类库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
Tags: 原创 类库 串口
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部