С кодом на стороне Ардуины всё в порядке, вот он:
Ардуина считывает только команды F1234! и отдаёт C1234! O1234! P1234! Всё идеально работает. Теперь следующий вопрос - а как мне из MATLAB в режиме реального времени и считывать данные из COM порта и посылать туда данные?Код:boolean dataReady = 0; char incomingChar; char typeMessage; String input = ""; int defaultValueC4900ControlVoltage = 1; //[0:255] int FromPCValueC4900ControlVoltage = defaultValueC4900ControlVoltage; void setup() { Serial.begin(9600); } void loop() { while (Serial.available()) { incomingChar = (char)Serial.read(); if (incomingChar == 'F' /*|| incomingChar == 'C'*/) { dataReady = 0; typeMessage = incomingChar; input = ""; continue; } //Serial.print("typeMessage:"); //Serial.println(typeMessage); if (incomingChar != '!' && (typeMessage == 'F' /*|| typeMessage == 'C'*/)) { input += incomingChar; } else { dataReady = 1; } } if (dataReady == 1 && typeMessage == 'F') { FromPCValueC4900ControlVoltage = input.toInt(); Serial.print("FromPCValueC4900ControlVoltage:"); Serial.println(FromPCValueC4900ControlVoltage); dataReady = 0; typeMessage = NULL; } /*if (dataReady == 1 && typeMessage == 'C') { int Vol = input.toInt(); Serial.print("VolC:"); Serial.println(Vol); dataReady = 0; typeMessage = NULL; }*/ analogWrite(9, FromPCValueC4900ControlVoltage); // Необходимо подбирать коэффициэнт [0:255] int sensorRealValueC4900ControlVoltage = analogRead(A0); // [0:1023] //float realC4900ControlVoltage = sensorValueC4900ControlVoltage * (5.0 / 1023.0); Serial.print("C"); Serial.print(sensorRealValueC4900ControlVoltage); Serial.println("!"); int sensorSupplyOutputVoltage = analogRead(A1); // [0:1023] Serial.print("O"); Serial.print(sensorSupplyOutputVoltage); Serial.println("!"); int sensorPhotomultiplierOutputVoltage = analogRead(A2); // [0:1023] Serial.print("P"); Serial.print(sensorPhotomultiplierOutputVoltage); Serial.println("!"); }




Ответить с цитированием