社区
网络编程
帖子详情
用API函数作串口通讯,如果串口号大于10,比如COM13,就无法打开串口,请问这是什么原因?如何解决?
luchang
2005-08-26 03:27:00
如题
...全文
390
4
打赏
收藏
用API函数作串口通讯,如果串口号大于10,比如COM13,就无法打开串口,请问这是什么原因?如何解决?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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);
}
【高德地图】自定义Marker偏移问题:精准定位的
解决
方案
本文详细解析了高德地图自定义Marker偏移问题的
原因
及
解决
方案。通过深入理解anchor和offset参数,结合不同场景(普通Marker、海量点、动态图标)的实践案例,帮助开发者实现精准定位。文章还提供了调试技巧、常见问题排查和性能优化建议,特别适合使用高德地图
API
的开发者参考。
高德地图自定义标记点marker缩放偏移问题
在使用高德地图点标记功能,自定义图标或内容时,如果对地图进行缩放,可以发现会此时图标会存在偏移,定位不准现象,如下图造成这种现象的
原因
其实是对标记点的偏移量offset属性理解不准确导致,通过查阅官方文档可知,offset默认值是[0,0],意思就是定位中心点是在图标的左上角,带着此种思维再去看刚才的效果就可以发现,其实是没有偏移的,只是图标定位点在底部,缩放时造成的视觉上错觉,如下图我们可以看到,如果把视觉焦点聚焦在左上角[0,0]的位置,其实定位一直是准确的。造成这种误导还有个
原因
就是当我们使用高德默认
高德地图自定义infowindow样式,textview设置文字在背景图中的位置
当点击高德地图的overlay时,弹出个view,
从零到一:在UniApp App中集成高德地图SDK与核心功能实战
本文详细介绍了在UniApp中集成高德地图SDK的全过程,包括前期准备、基础地图集成、核心功能实现及常见问题
解决
。通过实战案例,帮助开发者快速掌握高德地图在UniApp中的定位、标记点、路线规划等核心功能,提升App开发效率。
微信小程序高德地图进阶:自定义标点与动态气泡交互实战
本文详细介绍了在微信小程序中集成高德地图并实现自定义标点与动态气泡交互的实战技巧。从基础配置到高级功能开发,涵盖了图标修改、气泡样式定制、交互优化等核心内容,帮助开发者
解决
常见问题并提升地图应用性能。
网络编程
18,356
社区成员
64,164
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章