на С# делаю так:
PHP код:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) //по событию "пришли данные" читаем их и присваиваем значения переменным
{
bytes = serialPort1.BytesToRead; //считаем количество байт
byte[] data = new byte[serialPort1.BytesToRead];//массив принятых занчений
serialPort1.Read(data, 0, data.Length);//читаем
//здесь всякие условия типа количества байт, контрольные суммы, префиксы и т.д.
temp1=data[0]; //присваиваем значение переменной.
}
private void timer1_Tick(object sender, EventArgs e) //по таймеру обновляем label
{
label1.Text=temp1.ToString();
}
на С++, думаю, будет мало отличаться.
Вроде работает:
PHP код:
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
label1->Text=System::Convert::ToString(b);
}
private: System::Void serialPort1_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e)
{
unsigned char bytes = serialPort1->BytesToRead;
int i=0;
if (bytes >= 8)
{
bytes = 0;
char data[10];
for(i=0;i<8;i++)
{
data[i]=System::Convert::ToChar(serialPort1->ReadChar());
}
b=data[1];
}
}
Это для передачи данных побайтово а не строкой, но смысл тот же