Прежде всего - я студент из Германии, поэтому, пожалуйста, извините мой плохой английский. На данный момент я работаю над проектом, целью которого является управление сервомоторами на плате arduino посредством последовательной связи через модули xbee. Итак, теперь я изучаю SerialPort
, но получил проблемы с помощью write()
.Последовательная связь C++ SerialPort-Class
Мой план - отправить целочисленные значения, разделенные запятыми через мой последовательный порт. Visual Studio Сообщает об ошибке и говорит, что нет подходящего типа аргумента. Я действительно не знаю, как справиться с этой проблемой, потому что я совершенно не знаком со всей этой темой программирования.
#include <iostream>
using namespace std;
#using <System.dll>;
using namespace System;
using namespace System::IO::Ports;
using namespace System::Threading;
int main() {
unsigned char values[2] = { 50, 120 };
SerialPort^ mySerialPort = gcnew SerialPort("COM3");
mySerialPort->BaudRate = 9600;
mySerialPort->Open();
while (true) {
mySerialPort->Write(values);
}
}
Я предлагаю вам перейти на C#, а не Managed C++ (ака C++/CLI ака C++/CX), и C# более терпим к новичкам. Первая ошибка, которую я вижу, заключается в том, что вы открываете свой порт КАЖДОЕ время через цикл, но не закрываете его или не ожидаете чего-либо в цикле. – metal
Вы передаете неуправляемый массив [] в метод .NET, который требует 'array ^'. Если вы хотите «целочисленные значения, разделенные запятой», тогда вам нужно написать строку, а не массив байтов. –
@ HansPassant, спасибо за помощь. Если я использую строку вместо массива, мне просто нужно написать mySerialPort-> Write («String»); правильно? Итак, есть только явные значения. Как я могу использовать строки для отправки, например, что-то вроде «», которое включает значения, которые меняют каждую итерацию моего цикла? Спасибо! –
ElseTU