2013-06-30 4 views
1

Я хочу послать эту команду шестигранный блок:Отправить данные rs232/USB-адаптер через гнездо в Java

1B 40 26 0D 

над Java розеткой и прокси (serproxy) к машине с RS232. У меня есть следующий код:

DataOutputStream outToServer = new DataOutputStream(this.clientsocket.getOutputStream()); 
String command5 = "\u001b\u0040\u0026\u240D"; 
outToServer.writeUTF(command5); 
outToServer.flush(); 

Розетка и серпрокси правильно настроены. Кто-нибудь с идеей?

+0

Как вы инициализировали ** clientsocket **? – Machado

ответ

0

Функция writeUTF записывает длину строки перед ее символами. То, что вы можете использовать, это просто написать:

byte[] bytes = {0x1B, 0x40, ...}; 
out.write(bytes) 
+0

Я получаю erro с 0xa6 (Тип несоответствия: невозможно преобразовать из int в байт). Разве я не должен использовать синтаксис \ u00? –

+0

0xA6 должно быть передано в байты '(byte) 0xA6', потому что это вне диапазона (причина заключается в том, что в байтах Java подписаны). Функция '\ uABCD' предназначена только для того, чтобы вы могли писать символы Юникода в исходном коде, не опасаясь, что компилятор испортил его; не полезно сейчас. – Joni

+0

Благодарим вас за ответ. Теперь код работает нормально. Я проверил вывод с помощью SerialMon. Моя проблема с этим контроллером rs232 кажется другим. Он не отвечает и предпочитает ничего не делать. Мне нужно проверить это, если Ардуино подключился напрямую. благодаря –

Смежные вопросы