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
|
package com.example.hpostesting.data.constant
|
||||||
|
|
||||||
enum class HemoCubeCommands(val command: String) {
|
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 com.example.hpostesting.presentation.utils.UIUtils
|
||||||
import `in`.sminnovations.hpostesting.R
|
import `in`.sminnovations.hpostesting.R
|
||||||
import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding
|
import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding
|
||||||
|
import kotlin.math.log10
|
||||||
|
|
||||||
class HemoCubeFragment : Fragment() {
|
class HemoCubeFragment : Fragment() {
|
||||||
|
|
||||||
@@ -54,6 +55,11 @@ class HemoCubeFragment : Fragment() {
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
if (DataHolder.hemoCubeTestData == null) {
|
||||||
|
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||||
|
}
|
||||||
|
|
||||||
setupButtonClickListeners()
|
setupButtonClickListeners()
|
||||||
|
|
||||||
sharedPreference =
|
sharedPreference =
|
||||||
@@ -105,8 +111,8 @@ class HemoCubeFragment : Fragment() {
|
|||||||
object : MyDialogListener {
|
object : MyDialogListener {
|
||||||
override fun onClickNegativeButton() {}
|
override fun onClickNegativeButton() {}
|
||||||
override fun onClickPositiveButton() {
|
override fun onClickPositiveButton() {
|
||||||
fetchHemoCubeResult()
|
// fetchHemoCubeResult()
|
||||||
sendCommandToHemoCube()
|
getSampleResult()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -117,10 +123,6 @@ class HemoCubeFragment : Fragment() {
|
|||||||
|
|
||||||
binding.progressBar.visibility = View.VISIBLE
|
binding.progressBar.visibility = View.VISIBLE
|
||||||
|
|
||||||
if (DataHolder.hemoCubeTestData == null) {
|
|
||||||
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isOnline) {
|
if (isOnline) {
|
||||||
resultRatio?.let { ratio ->
|
resultRatio?.let { ratio ->
|
||||||
Log.e("Testdb", "upload")
|
Log.e("Testdb", "upload")
|
||||||
@@ -201,7 +203,8 @@ class HemoCubeFragment : Fragment() {
|
|||||||
private fun calculateResult() {
|
private fun calculateResult() {
|
||||||
hemoCubeViewModel
|
hemoCubeViewModel
|
||||||
}
|
}
|
||||||
private fun fetchHemoCubeResult() {
|
|
||||||
|
private fun listenToHemoCube() {
|
||||||
if (DataHolder.hemoCubeTestData == null) {
|
if (DataHolder.hemoCubeTestData == null) {
|
||||||
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||||
}
|
}
|
||||||
@@ -217,7 +220,7 @@ class HemoCubeFragment : Fragment() {
|
|||||||
|
|
||||||
binding.tvSubtitle4.text = fullReadOutput
|
binding.tvSubtitle4.text = fullReadOutput
|
||||||
resultData = fullReadOutput.toString()
|
resultData = fullReadOutput.toString()
|
||||||
DataHolder.hemoCubeTestData?.resultData = resultData
|
DataHolder.hemoCubeTestData?.resultData
|
||||||
resultRatio = "" //TODO
|
resultRatio = "" //TODO
|
||||||
val pareseddata = parseUsbData(fullReadOutput.toString())
|
val pareseddata = parseUsbData(fullReadOutput.toString())
|
||||||
Log.d("Result", data.toString())
|
Log.d("Result", data.toString())
|
||||||
@@ -231,6 +234,7 @@ class HemoCubeFragment : Fragment() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: remove
|
||||||
private fun fetchHemoCubeResultNew() {
|
private fun fetchHemoCubeResultNew() {
|
||||||
hemoCubeViewModel.progressBar.postValue(true)
|
hemoCubeViewModel.progressBar.postValue(true)
|
||||||
val fullReadOutput = StringBuilder()
|
val fullReadOutput = StringBuilder()
|
||||||
@@ -268,11 +272,11 @@ class HemoCubeFragment : Fragment() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sendCommandToHemoCube() {
|
private fun getBufferResult() {
|
||||||
hemoCubeViewModel.progressBar.postValue(true)
|
hemoCubeViewModel.progressBar.postValue(true)
|
||||||
val fullReadOutput = StringBuilder()
|
val fullReadOutput = StringBuilder()
|
||||||
|
|
||||||
(activity as HemocubeActivity).mService.eventDrivenWriteHemoCube(HemoCubeCommands.run,
|
(activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.getBuffer,
|
||||||
object : UsbServiceListener {
|
object : UsbServiceListener {
|
||||||
override fun onUsbRead(data: ByteArray?) {
|
override fun onUsbRead(data: ByteArray?) {
|
||||||
data?.let {
|
data?.let {
|
||||||
@@ -281,8 +285,62 @@ class HemoCubeFragment : Fragment() {
|
|||||||
|
|
||||||
if (stringData.contains("RESULT", true)) {
|
if (stringData.contains("RESULT", true)) {
|
||||||
// hemoCubeViewModel.mapDeviceConstants(fullReadOutput.toString())
|
// 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)
|
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)
|
hemoCubeViewModel.progressBar.postValue(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,14 @@ class HemoCubeViewModel @Inject constructor(
|
|||||||
testDetails?.testTime = SimpleDateFormat(
|
testDetails?.testTime = SimpleDateFormat(
|
||||||
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
|
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
|
||||||
).format(Calendar.getInstance().time)
|
).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 {
|
viewModelScope.launch {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class UsbService : Service() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun eventDrivenWriteHemoCube(command: HemoCubeCommands, listener: UsbServiceListener) {
|
fun sendAndListenToHemoCube(command: HemoCubeCommands, listener: UsbServiceListener) {
|
||||||
try {
|
try {
|
||||||
this.listener = listener
|
this.listener = listener
|
||||||
mPort.write(command.command.toByteArray(), Constants.WRITE_TIMEOUT_MILLIS)
|
mPort.write(command.command.toByteArray(), Constants.WRITE_TIMEOUT_MILLIS)
|
||||||
|
|||||||
Reference in New Issue
Block a user