Я пытаюсь написать управляющий символ (Ctrl-T, который #20
в таблице ASCII) к последовательному порту, используя WriteFile()
функция, но, видимо, это не работает.
Когда я использую замазку и нажимаю CTRL + T,, Я получаю ответ через последовательный порт для связи с датчиком силы ATI, с которым я работаю. Ниже приведен снимок:
Тем не менее, когда я использую WriteFile()
функция в C ++, я не получаю ответ от датчика, который указывает мне, что 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;
}
Задача ещё не решена.
Других решений пока нет …