Wstęp
Wspólnie z inżynierami producenta przygotowaliśmy dla Państwa kurs JAVA dla modułów, terminali Gemalto. Naszym celem jest ułatwienie Państwu startu w pracach z modułami i terminalami. Dotychczas przedstawiliśmy kolejno informację o modułach/terminalach programowalnych w JAVA, o tym jak zainstalować i uruchomić środowisko programistyczne, jak napisać i uruchomić pierwszy midlet.
Niniejsza część kursu dotyczy uruchomienia kolejnych midletów.
W naszej ocenie znacznie to przyspieszy Państwu start, a w wielu przypadkach zachęci to wykorzystania możliwości oferowanych przez moduły oraz sam język JAVA.
Przykładowe programy
W poprzednim odcinku pokazaliśmy jak dokonać importu przykładowego programu do środowiska, jak go skompilować, wgrać na moduł i potem uruchomić. Podobnie można postąpić z kolejnymi przykładowymi programami dostarczonymi przez producenta. Wybrane klasy oraz interfejsy, wykorzystane w tych przykładowych programach, omówione zostały poniżej.
Komendy AT
W tradycyjnym podejściu, komunikacja pomiędzy mikrokontrolerem i modułem odbywa się przy wykorzystaniu jednego z interfejsów komunikacyjnych, najczęściej interfejsu szeregowego. Powszechnie stosuje się komendy AT. Moduły Gemalto działają w podobny sposób.
Dodatkowo istnieje możliwość korzystania z tradycyjnych komend AT z poziomu midletu JAVA. Służy do tego klasa ATCommand, przy pomocy której można przesyłać komendy w postaci stingów bezpośrednio do interpretatora komend. Dotyczy to zarówno komend przy komunikacji synchronicznej jak i asynchronicznej.
Poniżej przykład takiej komunikacji dla obu trybów:
try {
System.out.println("Sending synchronous ATI...");
String Response = m_Cmd.send("ati\r");
System.out.println("Received synchronous response:");
System.out.println(Response);
System.out.println("Sending asynchronous ATI...");
m_Cmd.send("ati\r", new RspListener());
Thread.sleep(1000);
} catch (Exception e) {
System.out.println(e);
}
Cały midlet dostępny jest w przykładzie ATCmdDemo.
Porty komunikacyjne: UART, SPI, I2C.
Moduły GSM oprócz oczywistego faktu komunikacji z innymi częściami systemu poprzez sieć GSM, często komunikują się także lokalnie z innymi urządzeniami. W tym celu wykorzystywany jest port UART, SPI lub I2C. Aby maksymalnie ułatwić programiście pracę umożliwiono mu korzystanie ze zdefiniowanych interfejsów.
Program realizujący prostą operację odsyłania odebranych danych przez interfejs UART może wyglądać następująco:
CommConnection cc = (CommConnection)
Connector.open("comm:COM0;baudrate=19200");
int baudrate = cc.getBaudRate();
InputStream is = cc.openInputStream();
OutputStream os = cc.openOutputStream();
int ch = 0;
while(ch != 'Z') {
os.write(ch);
ch = is.read();
ch++;
}
is.close();
os.close();
cc.close();
Bardzo podobnie wygląda konfiguracja portu...