首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读4388次
StrConv(Arr,vbUnicode) VB

回家后电脑终于可以用了,可以不用再转贴了,可以写写自己开发工作中发现和体会的一些东西。

这几天在弄传真接收的问题,本来VC制作倒是简单一些,一个BYTE一个BYTE的读取传真页面数据,碰到需要转义的0X88可以轻松设置标志量,随便过滤后面的数据。

可是现在使用VB,这就有些头痛了,VB是不能一个BYTE编程读取得,使用MSComm 控件只能是CommData = MSComm1.Input,而二进制数据读取更麻烦一点Dim Buffer as Variant Dim Arr() as Byte '设定并打开端口 MSComm1.CommPort = 1 MSComm1.PortOpen = True '设定 InputMode 读取二进制数据
MSComm1.InputMode = comInputModeBinary '等待直到输入缓冲区有 10 个字节 Do Until MSComm1.InBufferCount < 10     DoEvents Loop  '往缓冲区存二进制数据 Buffer = MSComm1.Input '赋值于字节数组以便处理 Arr = Buffer

而这个内容送上来的长度是没有办法由程序决定,所以必须处理这个段的BYTE数据,由于不想使用这个数组遍历判断是否含有结束标志,所以利用VB的UNICODE性质,不会象ANSI字符串一样把0X00当作结束符,想投机取巧一把。

dim s as string StrConv(Arr,vbUnicode),然后再定义一个string,等于chr(10)+chr(13),然后就用instr(s,ss)来判断,感觉效果还不错,因此就用了,后来发现由于送上来的数据的长度不一定,有可能10是上一个数据帧的最后一个,而13是下一个数据帧的第一个。于是就写了 right(s,1)和left(s,1)= 来做判断,这下可真是害人啊。

不知道为什么,有时候这样是可以得,有时候却又是错误的。取得字符不是想象中的数据,而是0X00,或者是别的数据。真是莫名其妙。今天突然出现接收的传真页面丢失大半的情况。

Dim n() As Byte Dim s Dim b(2) As Byte b(0) = &H2  b(1) = &H3  b(2) = &H4 b(3) = &H5 s = b  n = s Dim m As String m = StrConv(n, vbUnicode) Dim nnn() As Byte nnn = m Debug.Print Right(m, 1), Asc(Right(m, 1)) If Right(m, 1) = Chr(5) Then     Debug.Print "sdfsd" End If

今天上午和下午在公司调试了半天,都是不能正常判断,然而晚上在家里却又能正常判断出来,真是莫名其妙。如果明天天气好,再到公司里面试一试。同样都是WINXP的系统,VB6中文版+SP6中文。

Dim df As String       df = RightB(ooo, 1)  If (RightB(ooo, 1)) = ps10 Then 这个判断总是失败


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/vbunicode1.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1117202359

2005年5月27日21:59星期五  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告





统计信息
[Yippee]||[统计]||日志:2143
在线: 9||用户: 2635 [列表]
今日:875||到访:3654660
Rss:||评论:1668

最新日志

最新评论

友情链接

日历
342009 - 0734
   1234
567891011
12131415161718
19202122232425
262728293031 

最新引用
搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8