Advertisement
Vassa007

senddata to arduino

Dec 8th, 2024
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.31 KB | None | 0 0
  1. package id.unej.demoarduinosm
  2.  
  3. import android.hardware.usb.UsbManager
  4. import android.os.Bundle
  5. import android.util.Log
  6. import androidx.appcompat.app.AppCompatActivity
  7. import com.hoho.android.usbserial.driver.UsbSerialDriver
  8. import com.hoho.android.usbserial.driver.UsbSerialPort
  9. import com.hoho.android.usbserial.driver.UsbSerialProber
  10. import id.unej.demoarduinosm.databinding.ActivityDemoBinding
  11. import java.io.IOException
  12.  
  13.  
  14. class DemoActivity : AppCompatActivity() {
  15.     private lateinit var binding: ActivityDemoBinding
  16.  
  17.     private lateinit var usbManager: UsbManager
  18.     private var usbSerialPort: UsbSerialPort? = null
  19.  
  20.     companion object {
  21.         private const val TAG = "SAPI"
  22.     }
  23.  
  24.     override fun onCreate(savedInstanceState: Bundle?) {
  25.         super.onCreate(savedInstanceState)
  26.         binding = ActivityDemoBinding.inflate(layoutInflater)
  27.         setContentView(binding.root)
  28.  
  29.         usbManager = getSystemService(USB_SERVICE) as UsbManager
  30.         // Tombol untuk mengirim data
  31.         binding.buttonArdu.setOnClickListener {
  32.             sendDataAndReadResponse("A")
  33.         }
  34.     }
  35.  
  36.     private fun sendDataAndReadResponse(data: String) {
  37.         // Mencari driver USB serial yang terhubung
  38.         val availableDrivers: List<UsbSerialDriver> = UsbSerialProber.getDefaultProber().findAllDrivers(usbManager)
  39.  
  40.         if (availableDrivers.isEmpty()) {
  41.             Log.e(TAG, "No USB serial device found.")
  42.             return
  43.         }
  44.  
  45.         // Ambil driver pertama (misalnya, driver untuk Arduino)
  46.         val driver: UsbSerialDriver = availableDrivers[0]
  47.         val connection = usbManager.openDevice(driver.device)
  48.  
  49.         if (connection == null) {
  50.             Log.e(TAG, "Unable to open device.")
  51.             return
  52.         }
  53.  
  54.         usbSerialPort = driver.ports[0]  // Ambil port pertama dari driver
  55.  
  56.         try {
  57.             // Set koneksi serial
  58.             usbSerialPort?.open(connection)
  59.             usbSerialPort?.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE)
  60.  
  61.         } catch (e: IOException) {
  62.             Log.e(TAG, "Error with USB serial connection", e)
  63.         }
  64.  
  65.         if (usbSerialPort == null) {
  66.             Log.e(TAG, "USB serial port is not initialized.")
  67.             return
  68.         }
  69.  
  70.         try {
  71.             // Kirim data ke Arduino
  72.             val dataToSend = data.toByteArray()
  73.             usbSerialPort?.write(dataToSend, 1000)
  74.  
  75.             // Baca respons dari Arduino
  76.             val buffer = ByteArray(1024)
  77.             val bytesRead = usbSerialPort?.read(buffer, 1000)
  78.  
  79.  
  80.             Log.e(TAG, "sendDataAndReadResponse: $bytesRead", )
  81.  
  82.             if (bytesRead != null && bytesRead > 0) {
  83.                
  84.                 val response = String(buffer, 0, bytesRead)
  85.                 Log.d(TAG, "Response from Arduino: $response")
  86.  
  87.                 binding.tvResult.append("\n$response")
  88.             } else {
  89.                 Log.e(TAG, "No response received.")
  90.             }
  91.         } catch (e: IOException) {
  92.             Log.e(TAG, "Error during communication", e)
  93.         }
  94.     }
  95.  
  96.     override fun onDestroy() {
  97.         super.onDestroy()
  98.         try {
  99.             usbSerialPort?.close()
  100.         } catch (e: IOException) {
  101.             Log.e(TAG, "Error closing USB serial port", e)
  102.         }
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement