add commands to set and read buffer sample

- add commands
This commit is contained in:
Pritimay Sarkar
2023-08-03 15:34:49 +05:30
parent 4488e5e16e
commit d0c309801d
4 changed files with 82 additions and 13 deletions

View File

@@ -1,5 +1,8 @@
package com.example.hpostesting.data.constant
enum class HemoCubeCommands(val command: String) {
run("R\r"),
startBuffer("B\r"),
getBuffer("B\r"),
startSample("S\r"),
getSample("P\r"),
}

View File

@@ -22,6 +22,7 @@ import com.example.hpostesting.presentation.utils.MyDialogListener
import com.example.hpostesting.presentation.utils.UIUtils
import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding
import kotlin.math.log10
class HemoCubeFragment : Fragment() {
@@ -54,6 +55,11 @@ class HemoCubeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (DataHolder.hemoCubeTestData == null) {
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
}
setupButtonClickListeners()
sharedPreference =
@@ -105,8 +111,8 @@ class HemoCubeFragment : Fragment() {
object : MyDialogListener {
override fun onClickNegativeButton() {}
override fun onClickPositiveButton() {
fetchHemoCubeResult()
sendCommandToHemoCube()
// fetchHemoCubeResult()
getSampleResult()
}
})
}
@@ -117,10 +123,6 @@ class HemoCubeFragment : Fragment() {
binding.progressBar.visibility = View.VISIBLE
if (DataHolder.hemoCubeTestData == null) {
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
}
if (isOnline) {
resultRatio?.let { ratio ->
Log.e("Testdb", "upload")
@@ -201,7 +203,8 @@ class HemoCubeFragment : Fragment() {
private fun calculateResult() {
hemoCubeViewModel
}
private fun fetchHemoCubeResult() {
private fun listenToHemoCube() {
if (DataHolder.hemoCubeTestData == null) {
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
}
@@ -217,7 +220,7 @@ class HemoCubeFragment : Fragment() {
binding.tvSubtitle4.text = fullReadOutput
resultData = fullReadOutput.toString()
DataHolder.hemoCubeTestData?.resultData = resultData
DataHolder.hemoCubeTestData?.resultData
resultRatio = "" //TODO
val pareseddata = parseUsbData(fullReadOutput.toString())
Log.d("Result", data.toString())
@@ -231,6 +234,7 @@ class HemoCubeFragment : Fragment() {
})
}
//TODO: remove
private fun fetchHemoCubeResultNew() {
hemoCubeViewModel.progressBar.postValue(true)
val fullReadOutput = StringBuilder()
@@ -268,11 +272,11 @@ class HemoCubeFragment : Fragment() {
})
}
private fun sendCommandToHemoCube() {
private fun getBufferResult() {
hemoCubeViewModel.progressBar.postValue(true)
val fullReadOutput = StringBuilder()
(activity as HemocubeActivity).mService.eventDrivenWriteHemoCube(HemoCubeCommands.run,
(activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.getBuffer,
object : UsbServiceListener {
override fun onUsbRead(data: ByteArray?) {
data?.let {
@@ -281,8 +285,62 @@ class HemoCubeFragment : Fragment() {
if (stringData.contains("RESULT", true)) {
// hemoCubeViewModel.mapDeviceConstants(fullReadOutput.toString())
val response: String = "RESULT SN18291 1937.23 2828.11"
// val response = stringData
val result = response.split(" ")
val deviceSerialNo = result[1]
val led1Buffer = result[2].toDouble()
val led2Buffer = result[3].toDouble()
DataHolder.hemoCubeTestData?.deviceSerialNumber = deviceSerialNo
DataHolder.hemoCubeTestData?.led1Buffer = led1Buffer
DataHolder.hemoCubeTestData?.led2Buffer = led2Buffer
hemoCubeViewModel.progressBar.postValue(false)
} else if (stringData.contains("FINE", true)) {
}
}
}
override fun onUsbError(e: Exception?) {
hemoCubeViewModel.progressBar.postValue(false)
}
})
}
private fun getSampleResult() {
hemoCubeViewModel.progressBar.postValue(true)
val fullReadOutput = StringBuilder()
(activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.getSample,
object : UsbServiceListener {
override fun onUsbRead(data: ByteArray?) {
data?.let {
val stringData = String(it)
fullReadOutput.append(stringData)
if (stringData.contains("RESULT", true)) {
// hemoCubeViewModel.mapDeviceConstants(fullReadOutput.toString())
val response: String = "RESULT SN18291 1937.23 2828.11 28211.20 121829.12"
// val response = stringData
val result = response.split(" ")
val deviceSerialNo = result[1]
val led1Buffer = result[2].toDouble()
val led2Buffer = result[3].toDouble()
val led1Sample = result[4].toDouble()
val led2Sample = result[5].toDouble()
val led1Average = log10(led1Buffer / led1Sample)
val led2Average = log10(led1Buffer / led1Sample)
val deviceRatio = led1Average / led2Average
DataHolder.hemoCubeTestData?.deviceSerialNumber = deviceSerialNo
DataHolder.hemoCubeTestData?.led1Buffer = led1Buffer
DataHolder.hemoCubeTestData?.led2Buffer = led2Buffer
DataHolder.hemoCubeTestData?.led1Sample = led1Sample
DataHolder.hemoCubeTestData?.led2Sample = led2Sample
DataHolder.hemoCubeTestData?.led1Average = led1Average
DataHolder.hemoCubeTestData?.led2Average = led2Average
DataHolder.hemoCubeTestData?.deviceRatio = deviceRatio
hemoCubeViewModel.progressBar.postValue(false)
}
}

View File

@@ -76,6 +76,14 @@ class HemoCubeViewModel @Inject constructor(
testDetails?.testTime = SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
).format(Calendar.getInstance().time)
testDetails?.deviceSerialNumber = DataHolder.hemoCubeTestData?.deviceSerialNumber.toString()
testDetails?.led1Buffer = DataHolder.hemoCubeTestData?.led1Buffer
testDetails?.led2Buffer = DataHolder.hemoCubeTestData?.led2Buffer
testDetails?.led1Sample = DataHolder.hemoCubeTestData?.led1Sample
testDetails?.led2Sample = DataHolder.hemoCubeTestData?.led2Sample
testDetails?.led1Average = DataHolder.hemoCubeTestData?.led1Average
testDetails?.led2Average = DataHolder.hemoCubeTestData?.led2Average
testDetails?.deviceRatio = DataHolder.hemoCubeTestData?.deviceRatio
viewModelScope.launch {
try {

View File

@@ -74,7 +74,7 @@ class UsbService : Service() {
}
}
fun eventDrivenWriteHemoCube(command: HemoCubeCommands, listener: UsbServiceListener) {
fun sendAndListenToHemoCube(command: HemoCubeCommands, listener: UsbServiceListener) {
try {
this.listener = listener
mPort.write(command.command.toByteArray(), Constants.WRITE_TIMEOUT_MILLIS)