你好,你能帮我解一个问题吗,在VC++读取串口的数据

chinamikeowen10 2003-08-19 11:32:54
我已经把程序和串口调试程序附上,简单的通信协议
现在我主要的问题是读取串口数据有问题
谢谢你!
...全文
51 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanfyj 2003-08-19
  • 打赏
  • 举报
回复
http://www.china-pub.com/computers/emook/0917/info.htm
mct1025 2003-08-19
  • 打赏
  • 举报
回复
读写串口的函数,我用过,没有问题
程序初始化时,使用OpenComm打开串口,退出时使用CloseComm关闭
comm.h文件
// Comm.h: interface for the CComm class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(COMM_H__)
#define COMM_H__

BOOL OpenComm(const char* pPort, int nBaudRate=57600, int nParity=NOPARITY, int nByteSize=8, int nStopBits=ONESTOPBIT);
BOOL CloseComm();
void WriteComm(void* pData, int nLength);
int ReadComm(void* pData, int nLength);

#endif // !defined(COMM_H__)
comm.cpp文件
#include "stdafx.h"

#include "Comm.h"

// 串口设备句柄
HANDLE hComm;

// 打开串口
// pPort: 串口名称或设备路径,可用"COM1"或"\\.\COM1"两种方式,建议用后者
// nBaudRate: 波特率
// nParity: 奇偶校验
// nByteSize: 数据字节宽度
// nStopBits: 停止位
BOOL OpenComm(const char* pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits)
{
DCB dcb; // 串口控制块
COMMTIMEOUTS timeouts = { // 串口超时控制参数
100, // 读字符间隔超时时间: 100 ms
1, // 读操作时每字符的时间: 1 ms (n个字符总共为n ms)
500, // 基本的(额外的)读超时时间: 500 ms
1, // 写操作时每字符的时间: 1 ms (n个字符总共为n ms)
100}; // 基本的(额外的)写超时时间: 100 ms

hComm = CreateFile(pPort, // 串口名称或设备路径
GENERIC_READ | GENERIC_WRITE, // 读写方式
0, // 共享方式:独占
NULL, // 默认的安全描述符
OPEN_EXISTING, // 创建方式
0, // 不需设置文件属性
NULL); // 不需参照模板文件

if(hComm == INVALID_HANDLE_VALUE) return FALSE;

// 打开串口失败

GetCommState(hComm, &dcb); // 取DCB

dcb.BaudRate = nBaudRate;
dcb.ByteSize = nByteSize;
dcb.Parity = nParity;
dcb.StopBits = nStopBits;

SetCommState(hComm, &dcb); // 设置DCB

SetupComm(hComm, 4096, 1024); // 设置输入输出缓冲区大小

::SetCommTimeouts(hComm, &timeouts); // 设置超时

return TRUE;
}

// 关闭串口
BOOL CloseComm()
{
return CloseHandle(hComm);
}

// 写串口
// pData: 待写的数据缓冲区指针
// nLength: 待写的数据长度
void WriteComm(void* pData, int nLength)
{
DWORD dwNumWrite; // 串口发出的数据长度

WriteFile(hComm, pData, (DWORD)nLength, &dwNumWrite, NULL);
}

// 读串口
// pData: 待读的数据缓冲区指针
// nLength: 待读的最大数据长度
// 返回: 实际读入的数据长度
int ReadComm(void* pData, int nLength)
{
DWORD dwNumRead; // 串口收到的数据长度

ReadFile(hComm, pData, (DWORD)nLength, &dwNumRead, NULL);

return (int)dwNumRead;
}
【为什么学习数据挖掘】       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。      从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。【超实用的课程内容】      本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。本课程分为三大部分:基础知识篇:主要讲解数据挖掘这项技能的基本工作流程和介绍和入门必须的基本技能Python语言的入门,带领大家了解数据挖掘的常见操作和基础知识。数据采集篇:学习如何解决数据挖掘的数据来源问题读取各类型不同的数据包括CSV,excel,MySQL进行数据采集的交互。数据探索篇:本篇主要解决数据的预处理保证数据的质量并用常见数据挖掘算法进行特征提取,分析数据背后隐含的信息。【报名须知】课程采取录播模式,课程永久有效,可无限次观看课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化【如何开始学习?】PC端:报名成功后可以直接进入课程学习移动端:下载CSDN学院或CSDN
【特征工程是什么?】 身高不同的两人,比较体重毫无意义, 但是如果将身高体重加以计算,转化成了BMI指数:BMI=体重/(身高^2) 通过比较这个新创造的特征值,谁胖谁瘦就一目了然了。 这就是特征工程,将原始数据转换为可以更好的、代表预测模型潜在问题的特征,通过分析这个新的特征,可以得到更准确的预测结果。 【特征工程——Python数据分析必备】 脏数据的“清洗剂” 有人说:学会了Python语言,就会做数据分析? 不一定! 你拿到的数据样本集,有可能存在这些问题: 如果样本数据存在问题,对数据建模的执行效率会有很大影响,甚至可能会造成模型结果的偏差。 不懂特征工程,数据分析=白忙一场! 【站内首门!特征工程全解课程】 过去,数字化是企业优化的要点; 而今,数字化成为了企业活下去的关键。 而数据分析应用有多广,特征工程的学习需求就有多大。 不过,大部分课本对于特征工程这一知识点鲜有提及,市面上的课程也少之又少,导致很多人在实际工作或学习中,遇到问题束手无策,严重降低效率。 CSDN全站首发——Python数据处理与特征工程 课程聚焦数据科学中,数据清洗与分析前的特征提取过程,解决数据科学中最重要的原始数据清洗和特征提取。 【定制课程 精准扫除学习盲点】 课程充分考虑各类实际问题,将每个知识点融入到对应的代码实例中,初学者也可无压力上手,讲师手把手带领入门。 知识点扫盲 + 案例实践 + 线上答疑 扫清数据分析前的所有障碍,提升你的数据工作的效率与准确度。 如果你是: 在这里你可以收获...... 了解如何将各类型数据载入计算机,进而愉快的探索数据科学; 掌握如何将需要分析的数据转化为算法模型可以接受的格式; 学会特征提取最基本的处理方式,为后续的算法学习打好基础。 经过19节课程的学习,你可以基本掌握数据采集、读取以及清洗的方法,具备进一步学习数据分析乃至深度学习的能力,能够大大拓宽你日后的求职道路。 【三重福利  惊喜等你】

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧