社区
网络编程
帖子详情
用API函数作串口通讯,如果串口号大于10,比如COM13,就无法打开串口,请问这是什么原因?如何解决?
luchang
2005-08-26 03:27:00
如题
...全文
354
4
打赏
收藏
用API函数作串口通讯,如果串口号大于10,比如COM13,就无法打开串口,请问这是什么原因?如何解决?
如题
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
legendhui
2005-08-26
打赏
举报
回复
小于10时候加不加都行的,大于9时候就是必须要加"\\\\.\\"
比如串口10,对应的参数为"\\\\.\\COM10",
legendhui
2005-08-26
打赏
举报
回复
void CLSComm::Initialize(UINT uBaud, char chParity, UINT uDataBits, float fStopBits)
{
m_uBaudRate= uBaud;
m_chParity= chParity;
m_uDataBits= uDataBits;
if (fStopBits == 1.5)// 1.5 个停止位
m_uStopBits= 2;
else if(fStopBits > 1.5)// 2 个停止位
m_uStopBits= 3;
else
m_uStopBits= 1;// 1 个停止位
}
BOOL CLSComm::OpenDevice(UINT uPort, HWND hMsgTarget)
{
BOOLbResult = FALSE;
TCHARszPort[MAX_PATH];
TCHARszBaud[MAX_PATH];
m_uCommPort= uPort;
m_hTargetWindow= hMsgTarget;
CloseDevice();
m_hWriteEvent= CreateEvent(NULL, TRUE, FALSE, NULL);// 发送数据事件
m_hShutdownEvent= CreateEvent(NULL, TRUE, FALSE, NULL);// 关闭线程的事件
m_ovComm.hEvent= CreateEvent(NULL, TRUE, FALSE, NULL);// 读取数据事件
m_hEventArray[USER_EVENT_QUIT]= m_hShutdownEvent;
m_hEventArray[USER_EVENT_RECEIVE]= m_ovComm.hEvent;
m_hEventArray[USER_EVENT_SEND]= m_hWriteEvent;
wsprintf(szPort, _T("\\\\.\\COM%d"), m_uCommPort);
wsprintf(szBaud, _T("baud=%d parity=%c data=%d stop=%d"), m_uBaudRate, m_chParity, m_uDataBits, m_uStopBits);
InitializeCriticalSection(&m_csCritical);
EnterCriticalSection(&m_csCritical);
// 打开串口设备
m_hDevice = CreateFile(szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
if (m_hDevice == INVALID_HANDLE_VALUE)
{
m_hDevice = NULL;
return FALSE;
}
if (SetCommTimeouts(m_hDevice, &m_timeoutComm))
{
if (SetCommMask(m_hDevice, EV_RXCHAR | EV_TXEMPTY | EV_CTS))
{
if (GetCommState(m_hDevice, &m_dcbComm))
{
m_dcbComm.fRtsControl = RTS_CONTROL_ENABLE;
//m_dcbComm.fRtsControl = RTS_CONTROL_DISABLE;
//m_dcbComm.fDtrControl = DTR_CONTROL_ENABLE;
if (BuildCommDCB(szBaud, &m_dcbComm))
{
if (SetCommState(m_hDevice, &m_dcbComm))
{
PurgeComm(m_hDevice, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);
m_hCommThread = CreateThread(NULL, 0, _CommThread, this, 0, &m_dwCommThreadID);
bResult = (m_hCommThread != NULL) ? TRUE : FALSE;
}
}
}
}
}
LeaveCriticalSection(&m_csCritical);
if (!bResult)
CloseDevice();
else
m_bThreadAlive = TRUE;
return bResult;
}
碧螺春的马甲
2005-08-26
打赏
举报
回复
CreateFile ("\\\\.\\COM13",...);
masterz
2005-08-26
打赏
举报
回复
GetLastError()
//check error message
#include <windows.h>
void ErrorExit(LPTSTR lpszFunction)
{
TCHAR szBuf[80];
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
wsprintf(szBuf,
"%s failed with error %d: %s",
lpszFunction, dw, lpMsgBuf);
MessageBox(NULL, szBuf, "Error", MB_OK);
LocalFree(lpMsgBuf);
ExitProcess(dw);
}
串口
通讯
,vb调用MS
Com
m控件
vb语言,通过调用MS
Com
m控件,显示
串口
传输的数据
Windows使用
串口
API
函数
串口
编程
Windows基于
串口
API
函数
的
串口
程序开发介绍欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导...
VC
串口
通信(Windows
API
)
本文转载自基于Windows
API
的VC++
串口
通信详解,以下附上大白的理解。 简介 在Win32下,可以使用两种编程方式实现
串口
通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用Windows的
API
函数
,这种方法可以清楚地掌握
串口
通信的机制,并且自由灵活。本文我们只介绍
API
串口
通信部分。
串口
的操
作
可以有两种操
作
方式:同步操
作
方式和重叠操
作
方式(又称为异步操
作
...
Win32
API
串口
编程
目录 一
串口
通信基础 1.1
串口
通信原理与特点 1.2
串口
通信的传输方式 1.3
串口
通信的同步技术 1.4串行接口标准 二
API
函数
实现
串口
通信 2.1
打开
串口
2.1.1
串口
是否有驱动 2.1.2连接
串口
2.1.3
串口
逻辑端口
号
大于
10
无法
打开
问题 2.2
串口
配置 2.2.1设置缓冲区大小
VS20
10
Windows
API
串口
编程 (二)
目录一
串口
通信基础1.1
串口
与特点1.2
串口
通信的传输方式1.3
串口
通信的同步技术1.4串行接口标准二
API
函数
实现
串口
通信2.1
打开
串口
2.1.1
串口
是否有驱动2.1.2连接
串口
2.1.3
串口
逻辑端口
号
大于
10
无法
打开
问题2.2
串口
配置2.2.1设置缓冲区大小2.2.2设置
串口
状态2.2.3设置需通知的事件2.2.4清空缓冲区2.3异步接收数据三示例代码3.1连接
串口
并设置参数3.2发送与接收数据3.3关闭
串口
。
网络编程
18,358
社区成员
64,186
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章