Я попробовал код Serial.cpp
с сайта Arduino .
Я только что сделал пару изменений и получил код, работающий должным образом.Однако проблема в том, что код C ++ последовательно отправляет значения ASCII, а не целые числа.Например, если я отправляю «5», я получаю 53 на стороне получателя.
Я попытался изменить тип буфера на int вместо char, но он вернул сообщение об ошибке:
ошибка C2664: «ReadFile»: невозможно преобразовать параметр 2 из «int» в «LPVOID»
Существует ли способ последовательной отправки целых чисел вместо значений ASCII?
Ниже приведен фрагмент кода.
bool Serial::WriteData(char *buffer, unsigned int nbChar)
{
DWORD bytesSend;
//Try to write the buffer on the Serial port
if (!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
{
//In case it don't work get comm error and return false
ClearCommError(this->hSerial, &this->errors, &this->status);
return false;
}
else
return true;
}
int main() {
// Convert from char* to wchar*
char *name_ser="COM7";
cout << name_ser << "(char*)" << endl;
size_t origsize=strlen(name_ser)+1;
const size_t newsize=100;
size_t convertedChars=0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, name_ser, _TRUNCATE);
wcscat_s(wcstring, L"(wchar_t*)");
wcout<<wcstring<<endl;
Serial serial(wcstring);
if (serial.IsConnected()){
while (1){
char *chr0 = "5";
serial.WriteData(chr0,1);
cout<<chr0<<endl;
}
}
system("pause");
return 0;
}