问题如下,一台电脑与一台检测仪器通讯
检测仪器的通讯格式如下:
R 73 011C ‘这行是开始的符号
R 01,1,,1,0,11ALT,谷丙转氨酶(ALT),,19.9,IU/L,(5.0 - 40.0),10/30/2002 132B
R 02,2,26,1,0,11ALT,谷丙转氨酶(ALT),,20.9,IU/L,(5.0 - 40.0),10/30/2002 138D
R 02,2,26,1,0,12AST,谷草转氨酶(AST),,26.4,IU/L,(5.0 - 40.0),10/30/2002 1380
R 02,2,26,1,0,13ALP,碱性磷酸酶(ALP),,40.6,IU/L,(15.0 - 121.0),10/30/2002 146A
R 02,2,26,1,0,14r-GT,r-谷氨酰转移酶(r-GT),,21.8,IU/L,(5.0 - 54.0),10/30/2002 166A
R 02,2,26,1,0,15TP,总蛋白(TP),,76.6,g/L,(60.0 - 85.0),10/30/2002 1037
R 02,2,26,1,0,16ALB,白蛋白(ALB),,46.6,g/L,(40.0 - 60.0),10/30/2002 1056
R 02,2,26,1,0,17TBIL,总胆红素(T-BIL),,10.6,umol/L,(2.0 - 20.0),10/30/2002 1439
R 02,2,26,1,0,18DBIL,直接胆红素(D-BIL),,5.1,umol/L,(0.0 - 6.0),10/30/2002 151F
R 03,4,62,1,0,11ALT,谷丙转氨酶(ALT),,14.0,IU/L,(5.0 - 40.0),10/30/2002 138A
R 03,4,62,1,0,12AST,谷草转氨酶(AST),,25.8,IU/L,(5.0 - 40.0),10/30/2002 1386
R 03,4,62,1,0,13ALP,碱性磷酸酶(ALP),,83.6,IU/L,(15.0 - 121.0),10/30/2002 1474
R 03,4,62,1,0,14r-GT,r-谷氨酰转移酶(r-GT),,21.0,IU/L,(5.0 - 54.0),10/30/2002 1665
R 03,4,62,1,0,15TP,总蛋白(TP),,78.5,g/L,(60.0 - 85.0),10/30/2002 103B
R 03,4,62,1,0,16ALB,白蛋白(ALB),,47.0,g/L,(40.0 - 60.0),10/30/2002 1054
R 03,4,62,1,0,17TBIL,总胆红素(T-BIL),,19.1,umol/L,(2.0 - 20.0),10/30/2002 1440
R 03,4,62,1,0,18DBIL,直接胆红素(D-BIL),H,9.3,umol/L,(0.0 - 6.0),10/30/2002 1570
R 03,4,62,1,0,21BUN,尿素氮(BUN),,5.83,mmol/L,(2.50 - 6.30),10/30/2002 121A
R 03,4,62,1,0,22UA,尿酸(UA),,249.2,umol/L,(150.0 - 430.0),10/30/2002 10BD
R 03,4,62,1,0,23CR,肌酐(CR),,94.5,umol/L,(60.0 - 120.0),10/30/2002 1043
R 03,4,62,1,0,24CA,钙(CA),,2.22,mmol/L,(2.10 - 2.60),10/30/2002 0E12
R 03,4,62,1,0,25IP,无机磷(IP),,1.42,mmol/L,(0.80 - 1.50),10/30/2002 11BC
R 03,4,62,1,0,26Mg,镁(Mg),,1.04,mmol/L,(0.66 - 1.07),10/30/2002 0E7F
R 03,4,62,1,0,27GLU,葡萄糖(GLU),,5.52,mmol/L,(3.89 - 6.10),10/30/2002 123A
R 03,4,62,1,0,33TCH,总胆固醇(TCH),H,6.32,mmol/L,(2.90 - 6.00),10/30/2002 13A2
每条数据以r开头,现在要提取第一个逗号前数据,第一,第二个逗号之间数据,第五,第六逗号之间的数字,第八,第九之间的数据
例如这条数据
R 01,1,,1,0,11ALT,谷丙转氨酶(ALT),,19.9,IU/L,(5.0 - 40.0),10/30/2002 132B
要提取数据是01、1、11、19.9这四个数据
因为每条数据是不定长,大概是68个字节左右。
检测仪器的通讯格式如下:
R 73 011C ‘这行是开始的符号
R 01,1,,1,0,11ALT,谷丙转氨酶(ALT),,19.9,IU/L,(5.0 - 40.0),10/30/2002 132B
R 02,2,26,1,0,11ALT,谷丙转氨酶(ALT),,20.9,IU/L,(5.0 - 40.0),10/30/2002 138D
R 02,2,26,1,0,12AST,谷草转氨酶(AST),,26.4,IU/L,(5.0 - 40.0),10/30/2002 1380
R 02,2,26,1,0,13ALP,碱性磷酸酶(ALP),,40.6,IU/L,(15.0 - 121.0),10/30/2002 146A
R 02,2,26,1,0,14r-GT,r-谷氨酰转移酶(r-GT),,21.8,IU/L,(5.0 - 54.0),10/30/2002 166A
R 02,2,26,1,0,15TP,总蛋白(TP),,76.6,g/L,(60.0 - 85.0),10/30/2002 1037
R 02,2,26,1,0,16ALB,白蛋白(ALB),,46.6,g/L,(40.0 - 60.0),10/30/2002 1056
R 02,2,26,1,0,17TBIL,总胆红素(T-BIL),,10.6,umol/L,(2.0 - 20.0),10/30/2002 1439
R 02,2,26,1,0,18DBIL,直接胆红素(D-BIL),,5.1,umol/L,(0.0 - 6.0),10/30/2002 151F
R 03,4,62,1,0,11ALT,谷丙转氨酶(ALT),,14.0,IU/L,(5.0 - 40.0),10/30/2002 138A
R 03,4,62,1,0,12AST,谷草转氨酶(AST),,25.8,IU/L,(5.0 - 40.0),10/30/2002 1386
R 03,4,62,1,0,13ALP,碱性磷酸酶(ALP),,83.6,IU/L,(15.0 - 121.0),10/30/2002 1474
R 03,4,62,1,0,14r-GT,r-谷氨酰转移酶(r-GT),,21.0,IU/L,(5.0 - 54.0),10/30/2002 1665
R 03,4,62,1,0,15TP,总蛋白(TP),,78.5,g/L,(60.0 - 85.0),10/30/2002 103B
R 03,4,62,1,0,16ALB,白蛋白(ALB),,47.0,g/L,(40.0 - 60.0),10/30/2002 1054
R 03,4,62,1,0,17TBIL,总胆红素(T-BIL),,19.1,umol/L,(2.0 - 20.0),10/30/2002 1440
R 03,4,62,1,0,18DBIL,直接胆红素(D-BIL),H,9.3,umol/L,(0.0 - 6.0),10/30/2002 1570
R 03,4,62,1,0,21BUN,尿素氮(BUN),,5.83,mmol/L,(2.50 - 6.30),10/30/2002 121A
R 03,4,62,1,0,22UA,尿酸(UA),,249.2,umol/L,(150.0 - 430.0),10/30/2002 10BD
R 03,4,62,1,0,23CR,肌酐(CR),,94.5,umol/L,(60.0 - 120.0),10/30/2002 1043
R 03,4,62,1,0,24CA,钙(CA),,2.22,mmol/L,(2.10 - 2.60),10/30/2002 0E12
R 03,4,62,1,0,25IP,无机磷(IP),,1.42,mmol/L,(0.80 - 1.50),10/30/2002 11BC
R 03,4,62,1,0,26Mg,镁(Mg),,1.04,mmol/L,(0.66 - 1.07),10/30/2002 0E7F
R 03,4,62,1,0,27GLU,葡萄糖(GLU),,5.52,mmol/L,(3.89 - 6.10),10/30/2002 123A
R 03,4,62,1,0,33TCH,总胆固醇(TCH),H,6.32,mmol/L,(2.90 - 6.00),10/30/2002 13A2
每条数据以r开头,现在要提取第一个逗号前数据,第一,第二个逗号之间数据,第五,第六逗号之间的数字,第八,第九之间的数据
例如这条数据
R 01,1,,1,0,11ALT,谷丙转氨酶(ALT),,19.9,IU/L,(5.0 - 40.0),10/30/2002 132B
要提取数据是01、1、11、19.9这四个数据
因为每条数据是不定长,大概是68个字节左右。
解决方案 »
- Delphi遍历进程,并把需要的进程激活,显示该程序窗体
- missing connection or connectionstring错误
- OpenDialog和SaveDialog过滤器问题
- 如何格式化成99,256,555.00啊
- 请各位大侠看看这个SQL语句错在哪里?
- 我要找个类似的文章,请问怎么没有????来者有分
- delphi的memo的一行怎么把他用一种颜色高亮显示
- Delphi 导出Excel
- 各位仁兄,在下初来乍到,实因急缺一个“火车车次查询系统”的源代码或者比较详细的编程思路!
- 怎样把word文档保存到数据库中?高手请指教
- 系统任务栏的问题
- 如何改变中文输入法中的半角和全角(在程序中用语句定)。
mSComm1.RThreshold = 88
MSComm1.InputLen = 88
刚开始接收数据的时候要接收开始符
R 73 011C ‘这行是开始的符号
R 01,1,,1,0,11ALT,谷丙转氨酶(ALT),,19.9,IU/L,(5.0 - 40.0),10/30/2002 132B
然后在Sub MSComm1_OnComm()里
If MSComm1.CommEvent = comEvReceive Then
i = i + 1
strtemp = MSComm1.Input
array4(i) = strtemp
Text1.Text = Text1.Text + strtemp
If i = 1 Then
MSComm1.RThreshold = 71
MSComm1.InputLen = 71
End If
End If
以为我接收的数据存到数组里,然后再提取出来
im ls_substring() As String '临时数组
Dim temp_table As String '临时表变量
Dim str As String '数组变量
Dim ls_sql1 As String 'sql 语句
Dim ls_sql As String 'sql语句,保存数据
Dim j As Integer
For j = 1 To i
str = array4(j) ls_substring = Split(str, ",")
ls_bottle = ls_substring(0)
ls_item = Trim(ls_substring(1))
Select Case ls_item
Case "1": temp_table = "liver"
Case "2": temp_table = "liverfulltest"
Case "3": temp_table = "kidney"
Case "4": temp_table = "liverkiney"
Case "6": temp_table = "glu"
Case "7": temp_table = "blood4"
Case "8": temp_table = "bloodsix"
Case "9": temp_table = "heart"
Case "10": temp_table = "heargree"
End Select
ls_result = Trim(ls_substring(8))
ls_code = Trim(Mid(ls_substring(5), 1, 2))
但是由于每行数据不定长,而我用split函数以“’”为分割ls_substring = Split(str, ",")。当接收到一定数据时,接收后的一行数据会变成“62,1,0,27GLU,葡萄糖(GLU),,5.52,mmol/L,(3.89 - 6.10),10/30/2002 123AR 03,4,62,1,0,33TCH,总胆”这样子了
用ls_bottle = ls_substring(0)
ls_item = Trim(ls_substring(1))
就会不是想要提取数据了
这里请问如何才能正确提取出想要的数据
串口通讯问题