win32 串口 编程 (一)
程序员文章站
2024-02-22 10:08:58
...
串口监控工具推荐使用AccessPort或PortMon,这两款软件都是免费的。
http://www.sudt.com/
SUDT AccessPort 1.37 (Freeware) (免费的 win7 下面可以使用,但是拷贝数据的时候,不能拷贝十六进制)
下面的图片使用的软件是 Device Monitoring Studio
发送:41 54 0D 0A
接收到的是
AT
OK
T
使用的设备是TC35模块,该模块支持AT指令,该模块在长时间上电之后,如果D8这个灯不闪了,需要重启一下板子
发送数据:41 54 0D 0A —– 4个数据
接收数据:41 54 0D 0D 0A 4F 4B 0D 0A —– 9个数据
用VC 建立一个console控制台 工程:代码如下:
// seiralTA.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwLength;
char recvBuf[1024] ;
DWORD dwactlen;
char psendbuf[32] = "AT\r\n";
DCB myDCB;
HANDLE m_hComm;
memset(recvBuf,0,sizeof(recvBuf));
m_hComm = CreateFile(
_T("COM6:"),
GENERIC_READ | GENERIC_WRITE, //允许读和写
0, //独占方式(共享模式)
NULL,
OPEN_EXISTING, //打开而不是创建(创建方式)
0,
NULL
);
//得到打开串口的当前属性参数,修改后再重新设置串口。
if (!GetCommState(m_hComm,&myDCB))
{
printf("GetCommState error");
return FALSE;
}
//设置串口参数
myDCB.BaudRate = CBR_9600; // 设置波特率9600
myDCB.fBinary = TRUE; // 设置二进制模式,此处必须设置TRUE
myDCB.fParity = FALSE; // 支持奇偶校验
myDCB.fOutxCtsFlow = FALSE; // No CTS output flow control
myDCB.fOutxDsrFlow = FALSE; // No DSR output flow control
myDCB.fDtrControl = DTR_CONTROL_DISABLE; // No DTR flow control
myDCB.fDsrSensitivity = FALSE; // DSR sensitivity
myDCB.fTXContinueOnXoff = TRUE; // XOFF continues Tx
myDCB.fOutX = FALSE; // No XON/XOFF out flow control
myDCB.fInX = FALSE; // No XON/XOFF in flow control
myDCB.fErrorChar = FALSE; // Disable error replacement
myDCB.fNull = FALSE; // Disable null stripping
myDCB.fRtsControl = RTS_CONTROL_DISABLE; //No RTS flow control
myDCB.fAbortOnError = FALSE; // 当串口发生错误,并不终止串口读写
myDCB.ByteSize = 8; // 数据位,范围:4-8
myDCB.Parity = NOPARITY; // 校验模式
myDCB.StopBits = 0; // 1位停止位
//设置串口参数
if (!SetCommState(m_hComm, &myDCB))
{
printf("SetCommState error");
return FALSE;
}
if(WriteFile(m_hComm, psendbuf, strlen(psendbuf), &dwactlen, NULL))
{
printf("write success!\n");
}
else
{
printf("write failed!\n");
}
if(ReadFile(m_hComm, recvBuf, 9, &dwLength, NULL))
{
printf("read success!\nread string: %s", recvBuf);
}
else
{
printf("read failed!\n");
}
CloseHandle(m_hComm); //m_hComm是CreateFile函数返回的串口句柄。
return 0;
}
log 如下:
write success!
read success!
read string: AT
OK
请按任意键继续. . .
注意,在用程序与串口通信的时候,需要关闭掉 其他的串口通信软件,占用该串口号
这个程序中WriteFile 和 ReadFile 都是阻塞的方式进行的,需要进一步的调整。
以上只是演示使用。
上一篇: 关于第一个servlet
推荐阅读
-
win32 串口 编程 (一)
-
MT7628学习笔记(23)——OpenWRT串口编程&ipk软件包编写与应用
-
关于Py Web编程的一些概念总结 python
-
关于Py Web编程的一些概念总结 python
-
函数式编程用到的一些函数
-
为你的项目加入一个阶段--技术研究 博客分类: 管理及貌似 项目管理敏捷开发XP编程工作
-
Javassist之一秒理解java动态编程
-
一本书的摘要 博客分类: 生活、工作、学习 软件测试编程应用服务器设计模式Workflow
-
【探讨】关于标记语言 ——对JSTL语言的一点点认识 出版XML网络应用数据结构编程
-
几年一轮回的编程潮流? 博客分类: 程序设计 编程