add commands to set and read buffer sample
- add commands
This commit is contained in:
@@ -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"),
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user