我正在尝试使用#20
函数将控制字符( CTRL-T ,即ASCII表中的WriteFile()
)写入串口,但显然它不起作用。
当我使用putty并按 CTRL + T 时,我会通过串口接收响应,以便与我使用的ATI力传感器进行通信。以下是快照:
但是,当我在C ++中使用WriteFile()
函数时,我没有得到传感器的响应,这表明 CTRL-T 命令没有写入串口。以下是代码段:
// set write character to CTRL-T (#20 = 0x14)
char t = 0x14;
// write the character to the serial port
m_serialPort.Write(&t,1);
// read 14 bytes with 1000 ms timeout from the serial port
m_serialPort.Read_N(str_read,14,1000);
我测试过函数Write
和Read_N
,当我处理可打印字符时它们工作正常。
有没有人知道如何解决这个问题?
编辑:这是一个示例代码:
// SerialTest.cpp : main project file.
#include "stdafx.h"
#include"SerialCommHelper.h"
#include <windows.h>
#include <iostream>
using namespace System;
CSerialCommHelper m_serialPort;
int main()
{
std::string comPort = "COM1";
std::string str_read;
// Open the serial Port
m_serialPort.Init(comPort,9600,0,1,8);
m_serialPort.Start();
m_serialPort.Purge();
// set write character to CTRL-T (#20 = 0x14)
char t = 0x14;
// write the character to the serial port
m_serialPort.Write(&t,1);
// read 14 bytes with 1000 ms timeout from the serial port
m_serialPort.Read_N(str_read,14,1000);
std::cout << str_read;
system("pause");
m_serialPort.Stop();
m_serialPort.UnInit();
return 0;
}