Среда, 18 Декабря 2024, 09:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Возможно ли на Unity принять данные из COM-порта?
8Observer8Дата: Вторник, 01 Сентября 2015, 13:33 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Здравствуйте,

Как известно данные из COM-порта приходят асинхронно, то есть мы не знаем когда случится это событие. Unity не поддерживает событий. Можно ли организовать режим ожидания приёма данных какими-нибудь средствами Unity?
seamanДата: Вторник, 01 Сентября 2015, 14:36 | Сообщение # 2
старожил
Сейчас нет на сайте
Для начала попробовать System.IO.Ports.SerialPort - возможно он не потянет других зависимостей и заработает.
Цитата
Unity не поддерживает событий.

С чего бы? Естественно поддерживает.
8Observer8Дата: Вторник, 01 Сентября 2015, 17:33 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
seaman, большое спасибо! Да, действительно, есть события в Unity.

Для того, чтобы работать с портами нужно переключить "NET 2.0 Subset" на "NET 2.0" здесь: "Edit" -> "Project Settings" -> "Player"

Но всё же данные не выводятся в консоль. Что тут может быть не так:

Код
    private SerialPort sp;

     void Start()
     {
         sp = new SerialPort("Com2", 9600);
         sp.Open();

         sp.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
     }

     private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
     {
         SerialPort sp = (SerialPort)sender;
         Debug.Log(sp.ReadExisting());
     }


Сообщение отредактировал 8Observer8 - Вторник, 01 Сентября 2015, 17:39
seamanДата: Вторник, 01 Сентября 2015, 20:17 | Сообщение # 4
старожил
Сейчас нет на сайте
1. Насколько я помню COM2 пишется именно большими буквами.
2. Действительно ли второй порт используете?
3. Совпадают ли с дефолтными остальные параметры (четность, количество бит и стоповые биты)?


Сообщение отредактировал seaman - Вторник, 01 Сентября 2015, 20:18
8Observer8Дата: Вторник, 01 Сентября 2015, 20:29 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Так я сначала написал две программки на WinForms: одна отсылает "hello, world", а другая выводит на экран.

Соединил с помощью VSPE, создав пару замкнутых портов. На WinForms проблем нет. На этом уровне я контролирую.

От регистра не зависит.

Нужно будет пробовать создать Thread. Была одна попытка. Ничего не выводит. А во время второго запуска Unity зависает совсем:



Сообщение отредактировал 8Observer8 - Вторник, 01 Сентября 2015, 20:30
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг