Что я пытаюсь сделать: Обработка 3 получает своего рода QR-код через мою веб-камеру -> она считывает значение и отправляет его на мою Arduino, Arduino успешно получает его и теперь может делать вещис этим.Теперь я хочу добавить еще один канал связи, Unity.Я хочу, чтобы Arduino отправлял значение из Обработки в Unity.Между Arduino и Unity легко общаться, но мне нужно для обработки значения веб-камеры.
Проблема: Обработка 3 и Unity используют один и тот же порт (COM4, 9600),Это приведет к исключению ввода-вывода в Unity, сообщающем, что «Доступ запрещен», за которым следуют ошибки последовательного порта, не открыты.
Обработка 3 кода
...
//Open port
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
myPort.write(1);
...
код Arduino
void setup() {
// put your setup code here, to run once:
...
Serial.begin(9600); // Start serial communication at 9600 bps
...
}
void loop() {
if (Serial.available()) { // If data is available to read,
val = Serial.read(); // read it and store it in val
}
//val contains now the data that was sent from Processing 3
//Send this data to Unity:
Serial.flush();
Serial.println(val);
}
код Unity
...
SerialPort stream = new SerialPort ("COM4", 9600); //We obviously can't open this port since its already in use by Processing 3. How to fix this?
...
// Use this for initialization
void Start () {
stream.Open(); //Throws IO exception: Access Denied error
}
// Update is called once per frame
void Update () {
string value = stream.ReadLine();
val = int.Parse(value);
if (val == 1) {
//Links van arduino
goLeft();
}else if (val == 2) {
//Rechts van arduino
goRight();
}
}
Мы, очевидно, не можем открыть порт в Unity, поскольку он уже используется процессингом3. Как это исправить? Поток связи:
Processing 3 --> Arduino --> Unity
В конце концов Unity необходимо знать, нужно ли вам идти влево или вправо на основе QR-кода, введенного на веб-камере.