概述
之前用SVM做了图片分类器,现在想把分类结果用串口通信的方法送给单片机,想请教一下是否有方法可以不编写界面(不用MFC)直接把串口通信程序编写在分类器后面直接运行实现通信。
2019年5月14日
终于有时间回来填坑了,代码如下:
#include "windows.h"
#include <iostream>
#include <TCHAR.H>
#include <string.h>
using namespace std;
HANDLE hCom; //全局变量,串口句柄
int serial_open(LPCWSTR COMx, int BaudRate) {
hCom = CreateFile(COMx, //COM1口
GENERIC_READ | GENERIC_WRITE, //允许读和写
0, //独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
0, //重叠方式FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED
(同步方式设置为0)
NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
printf("打开COM失败!n");
return FALSE;
}
SetupComm(hCom, 1024, 1024); //输入缓冲区和输出缓冲区的大小都是1024
//设定读写超时
/*COMMTIMEOUTS TimeOuts;
TimeOuts.ReadIntervalTimeout=1000;
TimeOuts.ReadTotalTimeoutMultiplier=500;
TimeOuts.ReadTotalTimeoutConstant=5000; //设定写超时
TimeOuts.WriteTotalTimeoutMultiplier=500;
TimeOuts.WriteTotalTimeoutConstant = 2000;
SetCommTimeouts(hCom, &TimeOuts); //设置超时
*/
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = BaudRate;
//设置波特率为BaudRate
dcb.ByteSize = 8;
//每个字节有8位
dcb.Parity = NOPARITY;
//无奇偶校验位
dcb.StopBits = ONESTOPBIT;
//一个停止位
SetCommState(hCom, &dcb);
//设置参数到hCom
PurgeComm(hCom, PURGE_TXCLEAR | PURGE_RXCLEAR);//清空缓存区
//PURGE_TXABORT 中断所有写操作并立即返回,即使写操作还没有完成。
//PURGE_RXABORT 中断所有读操作并立即返回,即使读操作还没有完成。
//PURGE_TXCLEAR 清除输出缓冲区
//PURGE_RXCLEAR 清除输入缓冲区
return TRUE;
}
int serial_write(char lpOutBuffer[]) //同步写串口
{
DWORD dwBytesWrite = sizeof(lpOutBuffer);
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hCom, &dwErrorFlags, &ComStat);
bWriteStat = WriteFile(hCom, lpOutBuffer, dwBytesWrite, &dwBytesWrite, NULL);
if (!bWriteStat)
{
printf("写串口失败!n");
return FALSE;
}
PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
return TRUE;
}
void Serial_close(void)
//关闭串口
{
CloseHandle(hCom);
}
int main()
{
serial_open(_T("COM1"), 4800); //打开COM1,波特率为4800
serial_write("'a'");//发送字符a
Serial_close();//关闭串口
system("pause");
return 0;
}
基本上一目了然,打开串口,写串口,关闭串口。
可以利用串口调试助手进行串口调试,手边有单片机开发板的可以尝试利用PC和单片机进行通信,实现简单的自动化控制。(用电脑控制小灯开关!就这么实现了。。。。。)
参考自:https://bbs.csdn.net/topics/392335217
注:
在初次与单片机做通信实验时出现了串口写入不正常的现象,原因不详。。。
我的笔记本USB的串口号从COM3开始,COM1和2不知道在哪里。。。用虚拟串口软件手动添加了COM1,2后串口工作就正常了。。。。。很神奇!
最后,还是推荐大家Chrome浏览器写文章,毕竟Chrome大法好!
最后
以上就是怕孤独抽屉为你收集整理的VS2015串口通信编程(入门级实现)的全部内容,希望文章能够帮你解决VS2015串口通信编程(入门级实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复