카테고리 없음

안드로이드 COM포트

안녕1999 2019. 9. 20. 08:31
안드로이드는 리눅스에서 돌아간다.
리눅스에서는 COM 포트를 /dev/ttySx 처럼 구분한다.

Windows Com Port Linux equivalent
COM 1 /dev/ttyS0
COM 2 /dev/ttyS1
COM 3 /dev/ttyS2

https://stackoverflow.com/questions/11011515/how-to-read-and-write-data-to-com-serial-ports-in-android

//장치찾는 방법
mDrivers = new Vector<Driver>(); LineNumberReader r = new LineNumberReader(new FileReader("/proc/tty/drivers")); String l;
while ((l = r.readLine()) != null)
{
  String drivername = l.substring(0, 0x15).trim();
  String[] w = l.split(" +");
  if ((w.length >= 5) && (w[w.length - 1].equals("serial")))
  {
      mDrivers.add(new      
      Driver(drivername, w[w.length - 4]));
  }
}



리눅스는 파일 입출력을 한다
//파일생성
mDevices = new Vector<File>();
File dev = new File("/dev");
File[] files = dev.listFiles();
if (files != null)
{
  int i;
  for (i = 0; i < files.length; i++)
  {
      if(files[i].getAbsolutePath().startsWith(mDeviceRoot))
    {
        Log.d(TAG, "Found new device: " + files[i]);
         mDevices.add(files[i]);
     }
  }
}


//드라이버 생성
public Driver(String name, String root)
{
   mDriverName = name;  
   mDeviceRoot = root;
}



//COM포트 open, write
int baurate = Integer.parseInt("9600");
mSerialPort = new SerialPort(mDevice.getPath(), baurate, 0);
mOutputStream = mSerialPort.getOutputStream();
byte[] bytes = hexStr2bytes("31CE");
mOutputStream.write(bytes);