Добрый день! Пишу Мидлет, управлящий взаимодействием терминала Siemens TC65 с электросчётчиком CE301 через RS232. Настройки COM - порта терминала указал такие же, как у электросчётчика. При попытке посылки строки запроса в порт программа обрабатывает исключение:
| Код | public void rwrs(){ try { String port; String ports = System.getProperty("microedition.commports"); int comma = ports.indexOf(','); if (comma > 0) { // Берём первый из доступных портов. port = ports.substring(0, comma); } else { // Доступен один порт. port =ports; } writeLog("port: "+port, true);//writeLog пишет иформацию в текстовый файл CommConnection commConn = (CommConnection) Connector.open("comm:COM0;baudrate=300;bitsperchar=7;stopbits=1;parity=even;blocking=off;autocts=off;autorts=off", Connector.READ_WRITE,true); final InputStream iStream = commConn.openInputStream(); final OutputStream oStream = commConn.openOutputStream(); final String[] messageString = {"/?!\r\n","¦050\r\n"};//2 запроса для электросчётчика Thread tRead = new Thread() { public void run() { for(int i=0;i<2;i++){ try { oStream.write(messageString[i].getBytes());//Отправляем запрос в электросчётчик } catch (IOException e1) {writeLog("write:"+ e1.toString(), true);//пишем в файл причину вылета // TODO Auto-generated catch block e1.printStackTrace(); } StringBuffer sb = new StringBuffer(); while(true) { try { int c = iStream.read();//Чтение символа из порта if (c != '\r') { sb.append((char)c); } else break; } catch (IOException e) {writeLog("read:"+ e.toString(), true);//пишем в файл причину // TODO Auto-generated catch block e.printStackTrace(); } } try { Thread.sleep ( 500 ); } catch (InterruptedException e) { } } } }; tRead.start(); iStream.close(); oStream.close(); commConn.close(); } catch (IOException ioe) { }; }
|
файл сообщений:
| Код | port: COM0 write:java.io.InterruptedIOException: Stream closed read:java.io.InterruptedIOException: Stream closed
|
Подскажите пожалуйста, почему строка запроса не пишется в порт ? Заранее спасибо !
|