搜索
bottom↓
回复: 22

[开源][交流][VB]自己动手编写Hex到Bin的转换工具(使用VB)【恢复】

[复制链接]

出0入296汤圆

发表于 2008-10-14 19:06:15 | 显示全部楼层 |阅读模式

[原理解析]


本人右手小拇指骨折……暂停更新原理部分……




<font color=red>[核心代码]



'------------------------------------------------------------------'

'&nbsp;&nbsp;&nbsp;函数说明:&nbsp;&nbsp;从HEX纪录的字符串中获取数据&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'&nbsp;&nbsp;&nbsp;输入:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符串,数据缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'&nbsp;&nbsp;&nbsp;输出:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;读取操作是否成功&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'&nbsp;&nbsp;&nbsp;调用函数:&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'------------------------------------------------------------------'

Public&nbsp;Function&nbsp;Get_Date_From_Hex_Item&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strHEXItem&nbsp;As&nbsp;String,&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByRef&nbsp;chDataBuffer()&nbsp;As&nbsp;Byte,&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByRef&nbsp;ItemType&nbsp;As&nbsp;Integer,&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByRef&nbsp;wAddress&nbsp;As&nbsp;Long&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;As&nbsp;Boolean

On&nbsp;Error&nbsp;GoTo&nbsp;Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;ReDim&nbsp;chData(0&nbsp;To&nbsp;0)&nbsp;As&nbsp;Byte

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;Size&nbsp;As&nbsp;Integer

&nbsp;&nbsp;&nbsp;&nbsp;Get_Date_From_Hex_Item&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;TempString&nbsp;As&nbsp;String

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;CheckSum&nbsp;As&nbsp;Integer

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;CheckSumData&nbsp;As&nbsp;Byte

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;'数据初始化和有效性检测

&nbsp;&nbsp;&nbsp;&nbsp;strHEXItem&nbsp;=&nbsp;Trim(strHEXItem)

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;strHEXItem&nbsp;=&nbsp;""&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Left(strHEXItem,&nbsp;1)&nbsp;&lt;>&nbsp;":"&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;CheckSum&nbsp;=&nbsp;0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;'读取HEX纪录中包含的数据大小

&nbsp;&nbsp;&nbsp;&nbsp;TempString&nbsp;=&nbsp;Mid(strHEXItem,&nbsp;2,&nbsp;2)

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Get_Byte_From_ASCII_HEX(TempString,&nbsp;chData(0))&nbsp;=&nbsp;False)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;Size&nbsp;=&nbsp;chData(0)

&nbsp;&nbsp;&nbsp;&nbsp;CheckSum&nbsp;=&nbsp;CheckSum&nbsp;+&nbsp;chData(0)

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Size&nbsp;&lt;>&nbsp;0)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'重新定义数据缓冲区的大小

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReDim&nbsp;chDataBuffer(0&nbsp;To&nbsp;(Size&nbsp;-&nbsp;1))

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;'读取地址

&nbsp;&nbsp;&nbsp;&nbsp;TempString&nbsp;=&nbsp;Mid(strHEXItem,&nbsp;4,&nbsp;2)

&nbsp;&nbsp;&nbsp;&nbsp;ReDim&nbsp;chData(0&nbsp;To&nbsp;1)&nbsp;As&nbsp;Byte

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Get_Byte_From_ASCII_HEX(TempString,&nbsp;chData(1))&nbsp;=&nbsp;False)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;CheckSum&nbsp;=&nbsp;CheckSum&nbsp;+&nbsp;chData(1)

&nbsp;&nbsp;&nbsp;&nbsp;TempString&nbsp;=&nbsp;Mid(strHEXItem,&nbsp;6,&nbsp;2)

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Get_Byte_From_ASCII_HEX(TempString,&nbsp;chData(0))&nbsp;=&nbsp;False)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;CheckSum&nbsp;=&nbsp;CheckSum&nbsp;+&nbsp;chData(0)

&nbsp;&nbsp;&nbsp;&nbsp;Byte_To_Int32&nbsp;chData(0),&nbsp;wAddress

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;'读取类型

&nbsp;&nbsp;&nbsp;&nbsp;TempString&nbsp;=&nbsp;Mid(strHEXItem,&nbsp;8,&nbsp;2)

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Get_Byte_From_ASCII_HEX(TempString,&nbsp;chData(0))&nbsp;=&nbsp;False)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;CheckSum&nbsp;=&nbsp;CheckSum&nbsp;+&nbsp;chData(0)

&nbsp;&nbsp;&nbsp;&nbsp;ItemType&nbsp;=&nbsp;chData(0)

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;'读取数据可选

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;ItemType&nbsp;=&nbsp;0&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'数据记录

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;n&nbsp;As&nbsp;Integer

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;n&nbsp;=&nbsp;0&nbsp;To&nbsp;Size&nbsp;-&nbsp;1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'读取数据

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TempString&nbsp;=&nbsp;Mid(strHEXItem,&nbsp;10&nbsp;+&nbsp;n&nbsp;*&nbsp;2,&nbsp;2)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Get_Byte_From_ASCII_HEX(TempString,&nbsp;chDataBuffer(n))&nbsp;=&nbsp;False)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckSum&nbsp;=&nbsp;CheckSum&nbsp;+&nbsp;chDataBuffer(n)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next&nbsp;n

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;'读取CheckSum

&nbsp;&nbsp;&nbsp;&nbsp;TempString&nbsp;=&nbsp;Mid(strHEXItem,&nbsp;(5&nbsp;+&nbsp;Size)&nbsp;*&nbsp;2,&nbsp;2)

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Get_Byte_From_ASCII_HEX(TempString,&nbsp;CheckSumData)&nbsp;=&nbsp;False)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Int16_To_Byte&nbsp;CheckSum,&nbsp;chData(0)

&nbsp;&nbsp;&nbsp;&nbsp;'取反

&nbsp;&nbsp;&nbsp;&nbsp;chData(0)&nbsp;=&nbsp;BYTENot(chData(0))

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;chData(0)&nbsp;=&nbsp;&HFF&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;CheckSumData&nbsp;&lt;>&nbsp;0&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;Else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chData(0)&nbsp;=&nbsp;chData(0)&nbsp;+&nbsp;1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(chData(0)&nbsp;&lt;>&nbsp;CheckSumData)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Get_Date_From_Hex_Item&nbsp;=&nbsp;True

&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

'------------------------------------------------------------------'

Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;Err.Clear

&nbsp;&nbsp;&nbsp;&nbsp;

End&nbsp;Function


'------------------------------------------------------------------'

'&nbsp;&nbsp;&nbsp;函数说明:&nbsp;&nbsp;将HEX字符串转换为单个字节&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'&nbsp;&nbsp;&nbsp;输入:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符串,数据缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'&nbsp;&nbsp;&nbsp;输出:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;读取操作是否成功&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'&nbsp;&nbsp;&nbsp;调用函数:&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'

'------------------------------------------------------------------'

Public&nbsp;Function&nbsp;Get_Byte_From_ASCII_HEX(strHEX&nbsp;As&nbsp;String,&nbsp;ByRef&nbsp;chByte&nbsp;As&nbsp;Byte)&nbsp;As&nbsp;Boolean

On&nbsp;Error&nbsp;GoTo&nbsp;Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;strTemp&nbsp;As&nbsp;String

&nbsp;&nbsp;&nbsp;&nbsp;strHEX&nbsp;=&nbsp;Trim(strHEX)

&nbsp;&nbsp;&nbsp;&nbsp;strHEX&nbsp;=&nbsp;Left(strHEX,&nbsp;2)

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;strTemp&nbsp;=&nbsp;UCase(Left(strHEX,&nbsp;1))

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;0

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Select&nbsp;Case&nbsp;strTemp

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"0"&nbsp;To&nbsp;"9"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;Val(strTemp)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"A"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;10

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"B"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;11

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"C"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;12

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"D"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;13

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"E"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;14

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"F"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;15

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;Else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'无效的字符出现

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get_Byte_From_ASCII_HEX&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Select

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;*&nbsp;16

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;strTemp&nbsp;=&nbsp;UCase(Right(strHEX,&nbsp;1))

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Select&nbsp;Case&nbsp;strTemp

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"0"&nbsp;To&nbsp;"9"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;Val(strTemp)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"A"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;10

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"B"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;11

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"C"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;12

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"D"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;13

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"E"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;14

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;"F"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chByte&nbsp;=&nbsp;chByte&nbsp;+&nbsp;15

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case&nbsp;Else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'无效的字符出现

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get_Byte_From_ASCII_HEX&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Select

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Get_Byte_From_ASCII_HEX&nbsp;=&nbsp;True

&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

'------------------------------------------------------------------'

Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;Err.Clear

&nbsp;&nbsp;&nbsp;&nbsp;Get_Byte_From_ASCII_HEX&nbsp;=&nbsp;False

End&nbsp;Function

<font color=#699BCD>

本贴被 Gorgon Meducer 编辑过,最后修改时间:2008-10-27,15:37:58.

出330入0汤圆

发表于 2009-1-23 13:42:23 | 显示全部楼层
介绍的这么详细,你可以为人师表了

出0入0汤圆

发表于 2009-1-23 13:37:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-10-15 21:31:46 | 显示全部楼层
向傻孩子同志学习!我也是用ICC和VB,VC不懂,呵呵。

出0入296汤圆

 楼主| 发表于 2008-10-15 21:15:41 | 显示全部楼层
to&nbsp;【13楼】&nbsp;armok&nbsp;阿莫

&nbsp;&nbsp;&nbsp;谢谢关心哈。刚刚完成了范例部分,呵呵……算是暂时可以有个交待了。
头像被屏蔽

出0入0汤圆

发表于 2008-10-15 21:06:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入296汤圆

 楼主| 发表于 2008-10-15 20:46:10 | 显示全部楼层
to&nbsp;【10楼】&nbsp;caplsc&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;好的,马上修改。



to&nbsp;【11楼】&nbsp;linxiaolong&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;不明白你的意思?

出0入0汤圆

发表于 2008-10-15 10:56:10 | 显示全部楼层
最简单的用vb中CommonDialog1控键就可以了!

出0入0汤圆

发表于 2008-10-15 01:33:35 | 显示全部楼层
to&nbsp;傻孩子:

“相关下载&nbsp;”那里,

“1、VB为操作扩展动态链接库&nbsp;BitAccess.dll”



如果我没有理解错的话,其中应该是&nbsp;"VB&nbsp;位操作………………”吧,

如果是不知道你写过VB的位操作库的人,估计是很容易迷糊的,希望能修正。&nbsp;

出0入22汤圆

发表于 2008-10-14 23:42:19 | 显示全部楼层
厉害,vb和vc都懂

出0入0汤圆

发表于 2008-10-14 22:16:29 | 显示全部楼层
to&nbsp;傻孩子:

……那该是我不好意思了,没有仔细看你的代码哈,主要是我不熟VB,所以就没有心思看代码,有时间弄个VC的相同功能的dd玩玩,其实我VC也不怎么熟,不过还是可以尝试着弄弄的。

出0入296汤圆

 楼主| 发表于 2008-10-14 22:09:07 | 显示全部楼层
to&nbsp;【6楼】&nbsp;caplsc&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;不好意思,其实我提供的函数可以同时实现你说的三个功能……

为了演示着两个函数的使用,我后面增加了一个将HEX转换为BIN文件

的工程例子。还有,楼主位有原理讲解部分没有更新……造成误解,

还请原谅。

出0入0汤圆

发表于 2008-10-14 22:07:12 | 显示全部楼层
to&nbsp;傻孩子:



“所需的数据”就在标题中啊……



我的意思是,你这里说从hex文件中读取所需的数据,是指以下什么情况:



1、提取自己感兴趣的数据



2、仅仅是将hex读取出来



3、其它

出0入296汤圆

 楼主| 发表于 2008-10-14 21:20:59 | 显示全部楼层
to&nbsp;【2楼】&nbsp;caplsc&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;不明白你的意思。你能给我指出具体的位置么?



to&nbsp;【4楼】&nbsp;ybx520&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;呵呵,可惜我不会Delphi哈,而且整个论坛用VB的教程没有Delphi多哈。

AVR方面我是一个使用ICC的顽固分子,上位机方面,我是一个使用VB+VC的顽

固分子。

出0入0汤圆

发表于 2008-10-14 20:03:35 | 显示全部楼层
有delphi的就更好了

出0入0汤圆

发表于 2008-10-14 19:50:57 | 显示全部楼层
我有e语言的,以前用e语言写了个编程器上位软件

出0入0汤圆

发表于 2008-10-14 19:34:02 | 显示全部楼层
这个“所需的数据”不知道具体指什么啊……

出0入296汤圆

 楼主| 发表于 2008-10-14 19:08:58 | 显示全部楼层

[应用范例]&nbsp;&nbsp;编写一个将HEX转化为Bin的小工具


&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;
1、打开VB,新建一个工程,在控件工具箱上,单击右键,选择添加部件。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如图所示,增加一个Common&nbsp;Dialog&nbsp;Control控件,这个工具将方便

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们打开一个HEX文件。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;
2、修改窗体属性:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将(名称)修改为:frmMain

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将BorderStyle修改为3-Fixed&nbsp;Dialog;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将Caption修改为:Hex&nbsp;to&nbsp;Bin&nbsp;Conversion;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将StartUpPosition修改为:2-屏幕中心

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;给主窗体添加一个CommonDialog控件、一个TextBox控件、一个CommandButton;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改CommonDialog的属性:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将(名称)修改为:CommonDlg



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改TextBox控件的属性:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将(名称)修改为txtHexFileName

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将BackColor修改为&H00C0FFFF&&nbsp;&nbsp;&nbsp;——也就是淡黄色

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将Appearance修改为0&nbsp;-&nbsp;Flat

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改字体颜色FontColor为&H00FF0000&&nbsp;&nbsp;——也就是蓝色

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将Text属性中的字符串删除(也就是字符串为空)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改CommandButton的属性:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(名称)修改为cmdConvert

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Caption修改为Convert

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调整控件的位置和大小,直到觉得美观为止。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;
3、双机TextBox,选择Click事件,输入以下的代码

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Sub&nbsp;txtHexFileName_Click()

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;Error&nbsp;GoTo&nbsp;Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonDlg.DialogTitle&nbsp;=&nbsp;Open&nbsp;File

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonDlg.Flags&nbsp;=&nbsp;cdlOFNCreatePrompt&nbsp;Or&nbsp;cdlOFNReadOnly

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonDlg.CancelError&nbsp;=&nbsp;True

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonDlg.Filter&nbsp;=&nbsp;Intel&nbsp;Hex&nbsp;File(*.HEX)|*.HEX

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonDlg.ShowOpen

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtHexFileName.Text&nbsp;=&nbsp;CommonDlg.FileName

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Sub

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Err.Clear

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;按F5运行程序,单击TextBox,将弹出文件打开窗口:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;选择HEX文件,单击打开,将在TextBox里面看到我们刚才选择的文件路径:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;
4、添加一个模块,并修改模块的属性(名称)为API_Support

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下载BitAccess.rar,解压缩获得BitAccess.dll,拷贝到该VB工程所在

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的目录下面。并在新加入的模块文件(API_Support.bas)中添加代码:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Declare&nbsp;Function&nbsp;BYTENot&nbsp;Lib&nbsp;BitAccess.dll&nbsp;(ByVal&nbsp;chData&nbsp;As&nbsp;Byte)&nbsp;As&nbsp;Byte



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Declare&nbsp;Sub&nbsp;Byte_To_Int16&nbsp;Lib&nbsp;BitAccess.dll&nbsp;(ByRef&nbsp;chData&nbsp;As&nbsp;Byte,&nbsp;ByRef&nbsp;nInt&nbsp;As&nbsp;Integer)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Declare&nbsp;Sub&nbsp;Byte_To_Int32&nbsp;Lib&nbsp;BitAccess.dll&nbsp;Alias&nbsp;Byte_To_Int16&nbsp;(ByRef&nbsp;chData&nbsp;As&nbsp;Byte,&nbsp;ByRef&nbsp;nInt&nbsp;As&nbsp;Long)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Declare&nbsp;Sub&nbsp;Int16_To_Byte&nbsp;Lib&nbsp;BitAccess.dll&nbsp;(ByRef&nbsp;nInt&nbsp;As&nbsp;Integer,&nbsp;ByRef&nbsp;chData&nbsp;As&nbsp;Byte)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public&nbsp;Declare&nbsp;Sub&nbsp;Int32_To_Byte&nbsp;Lib&nbsp;BitAccess.dll&nbsp;Alias&nbsp;Int16_To_Byte&nbsp;(ByRef&nbsp;nInt&nbsp;As&nbsp;Long,&nbsp;ByRef&nbsp;chData&nbsp;As&nbsp;Byte)



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;


&nbsp;&nbsp;&nbsp;&nbsp;
5、添加一个模块,用于保存我们对HEX进行读写的代码,并将其命名为:HEX_Support。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;粘贴楼主位上提供的两个函数到模块文件中。



&nbsp;&nbsp;&nbsp;&nbsp;
6、在控件工具箱中单击右键,选择添加部件,在部件列表中选择MicroSoft&nbsp;Windows

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Common&nbsp;Controls&nbsp;6.0&nbsp;(SP4)。我们要用到其中的控件ProgressBar来显示文件转化

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;时的进度。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在窗体中加入ProgressBar控件

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;按照图中所示的内容修改ProgressBar的属性:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;双机主窗体,添加代码,用于将ProgressBar覆盖到TextBox上,这样,在我们显示进度

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;条的时候就非常的美观——总不至于凭空冒出来一个进度条吧?

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Sub&nbsp;Form_Load()

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;ProgressBar1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Top&nbsp;=&nbsp;frmMain.txtHexFileName.Top&nbsp;+&nbsp;20

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Left&nbsp;=&nbsp;frmMain.txtHexFileName.Left&nbsp;+&nbsp;20

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Height&nbsp;=&nbsp;frmMain.txtHexFileName.Height&nbsp;-&nbsp;30

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Width&nbsp;=&nbsp;frmMain.txtHexFileName.Width&nbsp;-&nbsp;30

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Visible&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;With

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;
7、双击CommandButton,添加以下的代码:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Private&nbsp;Sub&nbsp;cmdConvert_Click()

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;strBinFileName&nbsp;As&nbsp;String



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'防止代码重入

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdConvert.Enabled&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'判断文件路径是否有效

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Dir(Trim(txtHexFileName.Text))&nbsp;=&nbsp;&nbsp;Or&nbsp;Trim(txtHexFileName.Text)&nbsp;=&nbsp;&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'用户没有选择文件,模拟用户单击了TextBox产生事件

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtHexFileName_Click

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Loop

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strBinFileName&nbsp;=&nbsp;Trim(txtHexFileName.Text)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strBinFileName&nbsp;=&nbsp;Left(strBinFileName,&nbsp;Len(strBinFileName)&nbsp;-&nbsp;4)&nbsp;&nbsp;'去掉扩展名

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strBinFileName&nbsp;=&nbsp;strBinFileName&nbsp;+&nbsp;.bin

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Hex_To_Bin_Convert(txtHexFileName.Text,&nbsp;strBinFileName,&nbsp;ProgressBar1)&nbsp;=&nbsp;False&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'操作失败

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox&nbsp;格式转化失败!,&nbsp;vbCritical,&nbsp;错误

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'操作成功

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox&nbsp;格式转化成功!&nbsp;+&nbsp;Chr(13)&nbsp;+&nbsp;Chr(10)&nbsp;+&nbsp;strBinFileName&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;vbInformation,&nbsp;提示

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'开启按钮功能

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdConvert.Enabled&nbsp;=&nbsp;True



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Sub



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=brown>添加函数Hex_To_Bin_Convert,用于实现将指定的HEX文件转化为指定的

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bin文件






Public&nbsp;Function&nbsp;Hex_To_Bin_Convert&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strHEXFileName&nbsp;As&nbsp;String,&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strBinFileName&nbsp;As&nbsp;String,&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Progress&nbsp;As&nbsp;ProgressBar&nbsp;_

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;As&nbsp;Boolean

On&nbsp;Error&nbsp;GoTo&nbsp;Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;StringLine&nbsp;As&nbsp;String

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;dwFileLength&nbsp;As&nbsp;Long

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;dwSize&nbsp;As&nbsp;Long

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;RecordType&nbsp;As&nbsp;Integer

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;wAddress&nbsp;As&nbsp;Long

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;wWriteAddress&nbsp;As&nbsp;Long

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;n&nbsp;As&nbsp;Long

&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;chData&nbsp;As&nbsp;Byte

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;Hex_To_Bin_Convert&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;chData&nbsp;=&nbsp;&HFF

&nbsp;&nbsp;&nbsp;&nbsp;strBinFileName&nbsp;=&nbsp;Trim(strBinFileName)

&nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;Progress

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Enabled&nbsp;=&nbsp;True

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Value&nbsp;=&nbsp;0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Visible&nbsp;=&nbsp;True

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'打开源文件Hex

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open&nbsp;strHEXFileName&nbsp;For&nbsp;Input&nbsp;As&nbsp;#1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'获取HEX文件的长度

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwFileLength&nbsp;=&nbsp;FileLen(strHEXFileName)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BIN文件已经存在

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;(Dir(strBinFileName)&nbsp;&lt;>&nbsp;)&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;strBinFileName&nbsp;As&nbsp;strBinFileName&nbsp;+&nbsp;Trim(Str(Rnd()))&nbsp;+&nbsp;.BAK

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'新建一个文件,如果有老文件存在,则直接覆盖

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open&nbsp;strBinFileName&nbsp;For&nbsp;Output&nbsp;As&nbsp;#2

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close&nbsp;#2

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'打开目标Bin文件

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open&nbsp;strBinFileName&nbsp;For&nbsp;Binary&nbsp;As&nbsp;#2

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'转化主循环

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;While&nbsp;Not&nbsp;EOF(1)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoEvents

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'从HEX文件中读取一条记录

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Line&nbsp;Input&nbsp;#1,&nbsp;StringLine

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'--------------------数据处理---------------------'

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLine&nbsp;=&nbsp;Trim(StringLine)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Left(StringLine,&nbsp;1)&nbsp;=&nbsp;:&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReDim&nbsp;chDataBuffer(0&nbsp;To&nbsp;0)&nbsp;As&nbsp;Byte

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'有效的纪录

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Get_Date_From_Hex_Item(StringLine,&nbsp;chDataBuffer,&nbsp;RecordType,&nbsp;wAddress)&nbsp;=&nbsp;True&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'有效的纪录

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'填充数据

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;RecordType&nbsp;=&nbsp;1&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;While&nbsp;(wWriteAddress&nbsp;&lt;>&nbsp;wAddress)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put&nbsp;#2,&nbsp;,&nbsp;chData

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wWriteAddress&nbsp;=&nbsp;wWriteAddress&nbsp;+&nbsp;1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wend

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put&nbsp;#2,&nbsp;,&nbsp;chDataBuffer

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wWriteAddress&nbsp;=&nbsp;wWriteAddress&nbsp;+&nbsp;UBound(chDataBuffer)&nbsp;+&nbsp;1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'无效错误的纪录,自动忽略

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'--------------------数据处理---------------------'

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwSize&nbsp;=&nbsp;dwSize&nbsp;+&nbsp;Len(StringLine)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Value&nbsp;=&nbsp;dwSize&nbsp;*&nbsp;100&nbsp;/&nbsp;dwFileLength

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Loop

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwSize&nbsp;=&nbsp;dwSize&nbsp;+&nbsp;Len(StringLine)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Value&nbsp;=&nbsp;dwSize&nbsp;*&nbsp;100&nbsp;/&nbsp;dwFileLength

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close&nbsp;#2

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close&nbsp;#1

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Enabled&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Visible&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;With





&nbsp;&nbsp;&nbsp;&nbsp;Hex_To_Bin_Convert&nbsp;=&nbsp;True

&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function

Err_Handle:

&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Err&nbsp;=&nbsp;58&nbsp;Then

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resume&nbsp;Next

&nbsp;&nbsp;&nbsp;&nbsp;Else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Err.Clear

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If

&nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;Progress

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Enabled&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Visible&nbsp;=&nbsp;False

&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;With

&nbsp;&nbsp;&nbsp;&nbsp;Close

End&nbsp;Function



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;软件完成效果图!

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>

&nbsp;


[其它说明]


Public&nbsp;Declare&nbsp;Function&nbsp;BYTENot&nbsp;Lib&nbsp;BitAccess.dll&nbsp;(ByVal&nbsp;chData&nbsp;As&nbsp;Byte)&nbsp;As&nbsp;Byte



Public&nbsp;Declare&nbsp;Sub&nbsp;Byte_To_Int16&nbsp;Lib&nbsp;BitAccess.dll&nbsp;(ByRef&nbsp;chData&nbsp;As&nbsp;Byte,&nbsp;ByRef&nbsp;nInt&nbsp;As&nbsp;Integer)

Public&nbsp;Declare&nbsp;Sub&nbsp;Byte_To_Int32&nbsp;Lib&nbsp;BitAccess.dll&nbsp;Alias&nbsp;Byte_To_Int16&nbsp;(ByRef&nbsp;chData&nbsp;As&nbsp;Byte,&nbsp;ByRef&nbsp;nInt&nbsp;As&nbsp;Long)

Public&nbsp;Declare&nbsp;Sub&nbsp;Int16_To_Byte&nbsp;Lib&nbsp;BitAccess.dll&nbsp;(ByRef&nbsp;nInt&nbsp;As&nbsp;Integer,&nbsp;ByRef&nbsp;chData&nbsp;As&nbsp;Byte)

Public&nbsp;Declare&nbsp;Sub&nbsp;Int32_To_Byte&nbsp;Lib&nbsp;BitAccess.dll&nbsp;Alias&nbsp;Int16_To_Byte&nbsp;(ByRef&nbsp;nInt&nbsp;As&nbsp;Long,&nbsp;ByRef&nbsp;chData&nbsp;As&nbsp;Byte)






<font color=red>[相关下载]





&nbsp;&nbsp;&nbsp;&nbsp;1、VB位操作扩展动态链接库&nbsp;<font color=red>BitAccess.dll

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点击此处下载&nbsp;ourdev_454671.rar(文件大小:14K)&nbsp;<font color=green>(原文件名:BitAccess.rar)
&nbsp;</font>

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;2、工程范例

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点击此处下载&nbsp;ourdev_456701.rar(文件大小:55K)&nbsp;<font color=green>(原文件名:Hex2Bin.rar)
</font>



&nbsp;&nbsp;&nbsp;&nbsp;3、HEX文件格式规范文本&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点击此处下载&nbsp;
ourdev_454930.rar(文件大小:22K)&nbsp;(原文件名:Hexadecimal&nbsp;Object&nbsp;File&nbsp;Format&nbsp;Specification.rar)&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;





本贴被 Gorgon Meducer 编辑过,最后修改时间:2008-10-15,21:13:27.

出0入0汤圆

发表于 2008-10-15 21:15:41 | 显示全部楼层
to&nbsp;【13楼】&nbsp;armok&nbsp;阿莫

&nbsp;&nbsp;&nbsp;谢谢关心哈。刚刚完成了范例部分,呵呵……算是暂时可以有个交待了。

出0入0汤圆

发表于 2008-10-15 20:46:10 | 显示全部楼层
to&nbsp;【10楼】&nbsp;caplsc&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;好的,马上修改。



to&nbsp;【11楼】&nbsp;linxiaolong&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;不明白你的意思?

出0入0汤圆

发表于 2008-10-14 22:09:07 | 显示全部楼层
to&nbsp;【6楼】&nbsp;caplsc&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;不好意思,其实我提供的函数可以同时实现你说的三个功能……

为了演示着两个函数的使用,我后面增加了一个将HEX转换为BIN文件

的工程例子。还有,楼主位有原理讲解部分没有更新……造成误解,

还请原谅。

出0入0汤圆

发表于 2008-10-14 21:20:59 | 显示全部楼层
to&nbsp;【2楼】&nbsp;caplsc&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;不明白你的意思。你能给我指出具体的位置么?



to&nbsp;【4楼】&nbsp;ybx520&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;呵呵,可惜我不会Delphi哈,而且整个论坛用VB的教程没有Delphi多哈。

AVR方面我是一个使用ICC的顽固分子,上位机方面,我是一个使用VB+VC的顽

固分子。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 20:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表