MFC中关于串口编程

toma2008 2014-12-18 07:30:54
我用CMSComm这个类,可以对COM口20以下的端口控制,但是对COM20以上的端口怎么控制呢?

求高人
...全文
212 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshi_hujunjun 2014-12-24
  • 打赏
  • 举报
回复
likfeng 说的对 CString strCOM; strCOM.Format(_T("\\\\.\\COM%d"), nPort);
梦想照旧实现 2014-12-24
  • 打赏
  • 举报
回复
引用 4 楼 toma2008 的回复:
都说了,windows的api也是一样的,你都没看我说的,这个必须要扩展端口了,有没有人弄过扩展端口的
请问阁下是在这请教问题,还是下圣旨? 好生霸气呀!
笨笨仔 2014-12-23
  • 打赏
  • 举报
回复
引用 4 楼 toma2008 的回复:
都说了,windows的api也是一样的,你都没看我说的,这个必须要扩展端口了,有没有人弄过扩展端口的
好像API没这个限制,我做串口自动搜索试验时超过了COM20,并未出错
toma2008 2014-12-23
  • 打赏
  • 举报
回复
都说了,windows的api也是一样的,你都没看我说的,这个必须要扩展端口了,有没有人弄过扩展端口的
toma2008 2014-12-19
  • 打赏
  • 举报
回复
用createfile这个api也是一样的
笨笨仔 2014-12-19
  • 打赏
  • 举报
回复
引用 楼主 toma2008 的回复:
我用CMSComm这个类,可以对COM口20以下的端口控制,但是对COM20以上的端口怎么控制呢? 求高人
不用这个控件类,直接使用API写串口程序。
likfeng 2014-12-19
  • 打赏
  • 举报
回复
不用MsComm,用CreatFile OpenFile来操作串口 // 打开串口 // 输入: pPort - 串口名称或设备路径,可用"COM1"或"\\.\COM1"两种方式,建议用后者 // nBaudRate - 波特率 // nParity - 奇偶校验 // nByteSize - 数据字节宽度 // nStopBits - 停止位 BOOL CMySerialPort::OpenComm(int nPort, int nBaudRate, int nParity, int nByteSize, int nStopBits) { DCB dcb; // 串口控制块 CString strCOM; strCOM.Format(_T("\\\\.\\COM%d"), nPort); m_nPort = nPort; m_hComm = CreateFile(strCOM, // 串口名称或设备路径 GENERIC_READ | GENERIC_WRITE, // 读写方式 0, // 共享方式:独占 NULL, // 默认的安全描述符 OPEN_EXISTING, // 创建方式 0, // 不需设置文件属性 NULL); // 不需参照模板文件 if(m_hComm == INVALID_HANDLE_VALUE) return FALSE; // 打开串口失败 // 取DCB if (!GetCommState(m_hComm, &dcb)) { return FALSE; } BOOL bBuild; CString strBuild; strBuild.Format(_T("COM%d:%d,N,8,1"), m_nPort, nBaudRate); bBuild = BuildCommDCB(strBuild,&dcb); if (!bBuild) { // TRACE("BuildCommDCB 错误\n"); return FALSE; } //设置DCB if (!SetCommState(m_hComm, &dcb)) { // TRACE("SetCommState 错误\n"); AfxMessageBox("设置DCB 错误"); return FALSE; } BOOL bb; bb = SetupComm(m_hComm, 4096, 4096); // 设置输入输出缓冲区大小 if (!bb) { return FALSE; } bb = SetCommTimeouts(m_hComm, &m_timeout); // 设置超时 if (!bb) { return FALSE; } bb = PurgeComm(m_hComm, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); if (!bb) { return FALSE; } return TRUE; }

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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