社区
网络编程
帖子详情
用API函数作串口通讯,如果串口号大于10,比如COM13,就无法打开串口,请问这是什么原因?如何解决?
luchang
2005-08-26 03:27:00
如题
...全文
335
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(Visual Basic)编程环境中,我们可以利用MS
Com
m控件来实现
串口
通信功能,这尤其适用于需要与硬件设备如打印机、GPS接收...
Windows使用
串口
API
函数
串口
编程
Windows基于
串口
API
函数
的
串口
程序开发介绍欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格...
VC
串口
通信(Windows
API
)
其二是调用Windows的
API
函数
,这种方法可以清楚地掌握
串口
通信的机制,并且自由灵活。本文我们只介绍
API
串口
通信部分。
串口
的操
作
可以有两种操
作
方式:同步操
作
方式和重叠操
作
方式(又称为异步操
作
...
Win32
API
串口
编程
目录 一
串口
通信基础 1.1
串口
通信原理与特点 1.2
串口
通信的传输方式 1.3
串口
通信的同步技术 1.4串行接口标准 ...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
串口
...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章