Witam serdecznie,
Na wstępie chciałbym zaznaczyć, że jestem początkujący w Javie i mam problem, z którym nie mogę sobie samemu poradzić. Mianowicie muszę odczytywać dane z portu COM1. Znalazłem w sieci rozwiązania przy użyciu biblioteki RxTx jednak czytałem, że pod Windows 7 64 nie działa ona w pełni sprawnie i postanowiłem znaleźć jakieś inne rozwiązanie. Znajomy polecił mi napisać skrypt w Pythonie i interpretować ten skrypt z poziomu mojej klasy w Javie. Tak też zrobiłem, jednak przy próbie zinterpretowania linii "import serial" otrzymuję komunikat informujący mnie, że nie znaleziono "Java Communications API". Moje pytanie brzmi czy jest możliwość rozwiązania mojego problemu bez konieczności użycia RxTx? Dodam, że sam skrypt działa prawidłowo. Bardzo proszę o pomoc. Pozdrawiam.
Kod metody (Java):
public void listenOnCOM()throws PyException
{
PythonInterpreter interp = new PythonInterpreter(null, new PySystemState());
PySystemState sys = Py.getSystemState();
sys.path.append(new PyString("C:\\jython2.5.3\\Lib"));
sys.path.append(new PyString("C:\\jython2.5.3\\Lib\\site-packages"));
//sys.platform = new PyString("win32");
interp.execfile("main.py");
System.out.println("Goodbye, cruel world");
}
Kod skryptu (Python):
import time
import subprocess
import serial
ser = serial.Serial('COM1', 115200, timeout=0.005)
print("connected to: " + ser.portstr)
myFile = open('Failed.txt','w')
while True:
# Read a line and convert it from b'xxx\r\n' to xxx
line = ser.readline().strip()
if line: # If it isn't a blank line
str = time.strftime("%m/%d/%Y %H:%M:%S")
print(str+" "+"#1"+" "+line)
myFile.write(str+" "+"#1"+" "+line+"\r\n")
if line == '520':
subprocess.call(["xte", "key Up"])
elif line == '620':
subprocess.call(["xte", "key Down"])
elif line == '110':
break
myFile.close()
ser.close()
To co wypluwa mi kompilator:
Exception in thread "MainThread" Traceback (most recent call last):
File "main.py", line 3, in <module>
import serial
File "C:\jython2.5.3\Lib\site-packages\serial_init_.py", line 23, in <module>
from serial.serialjava import *
File "C:\jython2.5.3\Lib\site-packages\serial\serialjava.py", line 35, in <module>
comm = detect_java_comm([
File "C:\jython2.5.3\Lib\site-packages\serial\serialjava.py", line 29, in detect_java_comm
raise ImportError("No Java Communications API implementation found")
ImportError: No Java Communications API implementation found