Added A command in DeviceFragment for checking temperature

This commit is contained in:
chandrashekhar reddy
2024-03-16 17:45:41 +05:30
parent b47d55fce2
commit d9882b14aa
3 changed files with 78 additions and 20 deletions

View File

@@ -16,4 +16,5 @@ enum class HemoCubeCommands(val command: String) {
THIRD_GAIN_COMMAND("V\r"),
FORTH_GAIN_COMMAND("W\r"),
CHECK_CUVETTE_COMMAND("L\r"),
CHECK_TEMP_COMMAND("A\r"),
}

View File

@@ -25,6 +25,7 @@ class DeviceFragment : Fragment() {
private var deviceId = ""
private var startListening = MutableLiveData(false)
private var resultData: String = ""
private var hardwareId = ""
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
): View {
@@ -42,6 +43,9 @@ class DeviceFragment : Fragment() {
private fun initViews() {
deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString()
deviceViewModel.deviceMessages.observe(viewLifecycleOwner) {
binding.tvSubtitle4.text = it
}
listenToHemoCube()
getDeviceId()
}
@@ -53,11 +57,25 @@ class DeviceFragment : Fragment() {
object : UsbServiceListener {
@SuppressLint("SetTextI18n")
override fun onUsbRead(data: ByteArray?) {
data?.let {
val stringData = String(it)
deviceViewModel.messages.postValue(stringData)
binding.tvSubtitle4.text = "Device ID: ${stringData}"
}
// data?.let {
// val stringData = String(it)
// deviceViewModel.messages.postValue(stringData)
// binding.tvSubtitle4.text = "Device ID"
// }
}
override fun onUsbError(e: Exception?) {
deviceViewModel.progressBar.postValue(false)
}
})
}
private fun getTemp() {
deviceViewModel.progressBar.postValue(true)
(activity as DeviceActivity).mService.sendAndListenToHemoCube(
HemoCubeCommands.CHECK_TEMP_COMMAND,
object : UsbServiceListener {
@SuppressLint("SetTextI18n")
override fun onUsbRead(data: ByteArray?) {
}
override fun onUsbError(e: Exception?) {
@@ -81,18 +99,37 @@ class DeviceFragment : Fragment() {
deviceViewModel.messages.postValue(stringData)
fullReadOutput.append(stringData)
resultData += stringData
binding.tvSubtitle4.text = "Device ID : ${resultData}"
if (stringData.contains("SN")) {
val slData = stringData.split(" ")
if (slData.size > 1) {
val hardwareId = slData[1].trim()
with(sharedPreferences.edit()) {
putString(Constants.DEVICE_ID, hardwareId)
apply()
}
// binding.tvSubtitle4.text = hardwareId
}
deviceViewModel.deviceMessages.postValue(resultData)
// binding.tvSubtitle4.text = ""
if (stringData.contains("SNE")) {
// val slData = stringData.split(" ")
// if (slData.size > 1) {
// val hardwareId = slData[1].trim()
// with(sharedPreferences.edit()) {
// putString(Constants.DEVICE_ID, hardwareId)
// apply()
// }
// binding.tvSubtitle4.text = "Device ID :$hardwareId"
// }
hardwareId = extractV2HardwareId(resultData).toString()
getTemp()
}
else if (stringData.contains("#AC")) {
// val slData = stringData.split(" ")
// if (slData.size > 1) {
// val hardwareId = slData[5].trim()
// with(sharedPreferences.edit()) {
// putString(Constants.DEVICE_ID, hardwareId)
// apply()
// }
// // binding.tvSubtitle4.text = hardwareId
// }
val lines = resultData.split("\n")
var temp = lines[2]
binding.tvSubtitleNew.text = "Device ID : "+hardwareId+"\nTemperature : $temp"
}
}
}
@@ -104,4 +141,10 @@ class DeviceFragment : Fragment() {
Firebase.crashlytics.recordException(e)
}
}
}
fun extractV2HardwareId(input: String): String? {
val pattern = Regex("SNS\\s*(.*?)\\s*SNE")
val matchResult: MatchResult? = pattern.find(input)
return matchResult?.groups?.get(1)?.value
}
}

View File

@@ -8,9 +8,23 @@
<TextView
android:id="@+id/tv_subtitle4"
style="@style/title1_1"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="Start"
android:visibility="invisible"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_subtitleNew" />
<TextView
android:id="@+id/tv_subtitleNew"
style="@style/title1_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:gravity="center"
android:text="Start"
@@ -20,4 +34,4 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>