Hi i am trying to make java desktop application where i am receiving value from seril port in my java string variable and i am receiving data through a hardware device and this will throw data continuously i am storing that data in a string variable now i want to get only some specific data from that.
so how can i achieve this i am receiving data in following format
$GPRMC,235949.799,V,,,,,0.00,0.00,050180,,,N*46
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,235949.799,,,,,0,0,,,M,,M,,*4F
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GPGLL,,,,,235949.799,V,N*7D
$GPTXT,01,01,02,ANTSTATUS=OPEN*2B
this string is continuously receiving
i want to get from this string only first line from every String
Here is my code
public class ListPortClass
{
private int times = 0;
public static void main(String[] s)
{
BufferedReader br = null;
try
{
String sCurrentLine;
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM6");
if (portIdentifier.isCurrentlyOwned())
{
System.out.println("Port in use!");
}
else {
System.out.println(portIdentifier.getName());
SerialPort serialPort = (SerialPort) portIdentifier.open("ListPortClass", 300);
int b = serialPort.getBaudRate();
System.out.println(Integer.toString(b));
serialPort.setSerialPortParams(300, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
OutputStream mOutputToPort = serialPort.getOutputStream();
InputStream mInputFromPort = serialPort.getInputStream();
String mValue = "DEBUG_GPS";
System.out.println("beginning to Write . \r\n");
mOutputToPort.write(mValue.getBytes());
System.out.println("DEBUG_GPS Command Written to Port. \r\n");
mOutputToPort.flush();
System.out.println("Waiting for Reply \r\n");
Thread.sleep(500);
byte mBytesIn [];// = new byte[48];
//for(int i=0;i<=mBytesIn.length;i++){
mInputFromPort.read();
try{
while(true){
int a = mInputFromPort.read();
char c=(char)a;
//String c =String.valueOf(a);
//System.out.print(c);
String temp = Character.toString(c);
System.out.print(temp);
}}
catch(IOException e)
{System.out.println(e);}
mOutputToPort.close();
mInputFromPort.close();
}
}
catch (Exception ex)
{
System.out.println("Exception : " + ex.getMessage());
}
}
}
here is my updated code
public static void main(String[] s)
{
BufferedReader br = null;
try
{
String sCurrentLine;
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM6");
if (portIdentifier.isCurrentlyOwned())
{
System.out.println("Port in use!");
}
else {
System.out.println(portIdentifier.getName());
SerialPort serialPort = (SerialPort) portIdentifier.open("ListPortClass", 300);
int b = serialPort.getBaudRate();
System.out.println(Integer.toString(b));
serialPort.setSerialPortParams(300, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
OutputStream mOutputToPort = serialPort.getOutputStream();
InputStream mInputFromPort = serialPort.getInputStream();
String mValue = "DEBUG_GPS";
System.out.println("beginning to Write . \r\n");
mOutputToPort.write(mValue.getBytes());
System.out.println("DEBUG_GPS Command Written to Port. \r\n");
mOutputToPort.flush();
System.out.println("Waiting for Reply \r\n");
Thread.sleep(500);
try {
br = new BufferedReader (new InputStreamReader(mInputFromPort));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
}
catch(IOException e){
e.printStackTrace();
}
//mOutputToPort.close();
//mInputFromPort.close();
}
}
catch (Exception ex)
{
System.out.println("Exception : " + ex.getMessage());
}
}
}
i did following code updated code
You already have aBufferedReader object defined in your code, but not used. If you use if you can then use the readLine
method. After each sucessful read of a line you can then send it to another method for processing.
Construct your BufferedReader as
br = new BufferedReader(new InputStreamReader(mInputFromPort));
what you want is
//for(int i=0;i<=mBytesIn.length;i++){
// CUT ALL OF THIS CODE
// until here
try {
br = new BufferedReader (new InputStreamReader(mInputFromPort));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
} catch(IOException e){
e.printStackTrace();
}
you dont want to be doing mInputFromPort.read();
stuff, you are now going to be using the readLine
code NOT both
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.