【问题标题】:Cannot open/initialize serial port in C++ using SerialCommHelper无法使用 SerialCommHelper 在 C++ 中打开/初始化串行端口
【发布时间】:2014-02-05 00:27:36
【问题描述】:

我们正在使用 USB 串口转换器来建立串口连接。我们在一台没有串口的电脑上进行了测试,并且能够通过转换器成功初始化并发送命令到设备。一旦我们将 .exe 文件发布到具有相同 USB 串行转换器的另一台 PC,它无法打开 com 端口。

我们认为我们需要在代码中更改的唯一一件事是端口号,我们确保设备管理器中的端口号是正确的。 COM6 在工作计算机上,COM11 在非工作计算机上。我们还尝试将 COM11 更改为 COM2(未使用的端口号)。我们试图让它工作的 PC 已经有 3 个真正的串行端口(COM1、3 和 4),但它们会以某种方式干扰这个端口吗?

我们正在使用 SerialCommHelper.cpp 代码来初始化端口。

HRESULT CSerialCommHelper:: Init(std::string szPortName, DWORD dwBaudRate,BYTE byParity,BYTE byStopBits,BYTE byByteSize) 
{
HRESULT hr = S_OK;
try
{


    m_hDataRx  = CreateEvent(0,0,0,0);

    //open the COM Port
    //LPCWSTR _portName =LPCWSTR( szPortName.c_str());

    wchar_t* wString=new wchar_t[4096];
   MultiByteToWideChar(CP_ACP, 0, szPortName.c_str(), -1, wString, 4096);

    m_hCommPort = ::CreateFile(wString,
                                GENERIC_READ|GENERIC_WRITE,//access ( read and write)
                                0,  //(share) 0:cannot share the COM port                       
                                0,  //security  (None)              
                                OPEN_EXISTING,// creation : open_existing
                                FILE_FLAG_OVERLAPPED,// we want overlapped operation
                                0// no templates file for COM port...
                                );
    if ( m_hCommPort == INVALID_HANDLE_VALUE )
    {
        TRACE ( "CSerialCommHelper : Failed to open COM Port Reason: %d",GetLastError());
        ASSERT ( 0 );
        std::cout << "This is where the error happens" << std::endl;
        return E_FAIL;
    }

我们称之为使用

if( m_serial.Init(comPort, 38400, 0, 1, 8) != S_OK )

哪个 comPort 设置正确,但 Init 从不返回 S_OK。

感谢任何帮助!谢谢!

【问题讨论】:

    标签: c++ serialization usbserial


    【解决方案1】:

    COM10 及更高版本的 COM 端口名称语法发生变化。你需要:“\\.\COM10”

    如此处所述... http://support.microsoft.com/kb/115831/en-us

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多