用 VC 写 CRC32 DLL 给VB调用

明华RF-EYE-U010读器开发套件:含C++/Delphi/VB示例、DLL库与CHM接口手册 明华RF-EYE-U010读器配套开发资源,直接支持Windows平台快速集成。内置VC++(ReadWriteTest)、Delphi(Rfexamd)、VB(sample)等多语言可编译工程,全部附带.dsw/.dpr/.frm等完整项目文件及.cfg配置文件,改完串口或IP即可运行。提供mwrf32.dll动态库、头文件mwrf32.h和静态库mwrf32.lib,兼容VC6.0、Delphi5、VB5.0、VFP等传统开发环境。核心功能覆盖设备初始化、EPC/TID/USER区读、天线开关控制、 阅读详情

建立 crc32.cpp

代码如下:

---------------------------------------------------------------------------------

//kwanhong Young 2004-9-1

unsigned long CRCTable[256];

/*
int main(int argc, char* argv[])
{
 Init();
 unsigned long r=Update((unsigned char *)("ABCDEFG"), 7,0xFFFFFFFF);
 printf("result is:%d",r);
 return 0;
}
*/

//void Init()
extern "C" void __stdcall Init()
{
 unsigned long crc, i, j;
 unsigned long poly = 0xEDB88320;

 for(i=0; i<256; i++)
 {
  crc = i;
  for(j=8; j>0; j--)
  {
   if(crc & 1)
    crc = (crc >> 1) ^ poly;
   else
    crc >>= 1;
  }
  CRCTable[i] = crc;
 }
}

extern "C" unsigned long __stdcall Update(unsigned char *buffer,long length, unsigned long crc)
{
 //unsigned long crc = 0xFFFFFFFF;
 unsigned char *ptr = buffer;

 while(length > 0)
 {
  crc = ((crc >> 8) & 0x00FFFFFF) ^ CRCTable[(crc ^ *ptr) & 0xFF];
  ptr++;
  length--;
 }
 return crc;
}

创建 crc32.def

代码如下:

---------------------------------------------------------------------------

EXPORTS
 Init
 Update

然后就可以编译成 DLL 了。

现在用VB新建一个 Class。代码如下:

-------------------------------------------------------------------------

 

Private Declare Sub CRC32Init Lib "kw_crc32.dll" Alias "Init" ()
Private Declare Function CRC32Update Lib "kw_crc32.dll" Alias "Update" (db As Any, ByVal length As Long, ByVal crcvalue As Long) As Long

Private m_lValue     As Long

Private Sub Class_Initialize()
    '//make crc32 table
    CRC32Init
    m_lValue = &HFFFFFFFF
End Sub

Public Sub Reset()
    m_lValue = &HFFFFFFFF
End Sub

Public Sub Encode(bytData() As Byte, ByVal iLen As Long)
    m_lValue = CRC32Update(bytData(0), iLen, m_lValue)
End Sub

Public Sub EncodePtr(ByVal ptbytData As Long, ByVal iLen As Long)
'//use data pointer
    m_lValue = CRC32Update(ByVal ptbytData, iLen, m_lValue)
End Sub

Public Function GetValue() As String
    GetValue = Right("00000000" & Hex$(m_lValue Xor &HFFFFFFFF), 8)
End Function

Public Function EncodeString(SourceString As String) As String
'// Function to digest a text string and output the result as a string
'// of hexadecimal characters.
   
    Dim bytData() As Byte
   
    m_lValue = &HFFFFFFFF
   
    If Len(SourceString) = 0 Then
        ReDim bytData(0)
        EncodeString = "00000000"
    Else
        bytData = StrConv(SourceString, vbFromUnicode)
        m_lValue = CRC32Update(bytData(0), UBound(bytData) + 1, m_lValue)
    End If
   
    EncodeString = Right("00000000" & Hex$(m_lValue Xor &HFFFFFFFF), 8)
   
End Function

Public Function SaveState() As String
'//save the state
    SaveState = m_lValue
End Function

Public Function LoadState(s As String) As Boolean
'//load the state
    m_lValue = s
    LoadState = True
End Function

 

现在就可以在VB里面实现高速的CRC32 运算。

 

明华URF-R330非接触读卡器Windows开发套件:含多语言Demo源码、mwrf32.dll驱动库与中文手册 明华URF-R330非接触IC卡读器的Windows端开发支持包,开箱即用。包含HDemoRF2.1、HRFFUDANDemo1.0、HRFSHC1102Demo1.0三款免驱演示程序,支持M1卡等主流RFID卡片的扇区读、密钥认证与数据校验。核心组件为mwrf32.dll动态库,配套头文件mwrf32.h、静态库mwrf32.lib、配置文件mf30.ini和默认密码文件m1pas.pwd,适配VC6.0、VB5.0、Delphi5、PowerBuilder5及Visual FoxPro项目集成。所有 阅读详情

相关推荐

LG K120S PLC串口通信开发包:VC6.0源码+ActiveX控件+TE测试程序

一套开箱即用的LG K120S PLC串口通信开发资源,包含完整VC6.0工程源码,核心是封装好的ActiveX控件testocx.ocx,内置串口驱动、K120S专用协议解析(支持D寄存器读、M继电器状态查询、定时器监控等)、响应超时与校验处理。配套提供可直接运行的TE.exe测试程序,带图形化操作界面,能实时发送指令并显示返回数据;附带注册/卸载控件的批处理脚本,方便部署调试。源码模块清晰划分:_serialport.cpp负责底层RS232通信,_Plc.cpp实现PLC逻辑交互,agreement

r7s8t的博客 212

文件、字符串进行CRC32校验的DLL源码

根据文件、字符串生成相应的校验码。GetCharCRC为字符串TOCRC,GetFileCRC为文件TOCRC。另外本源码适用于广东的粤通卡加密

GrandDog驱动深度解析:Delphi+VC+VB工业通信套件实战指南

工业通信驱动是连接上位机与嵌入式采集设备的关键中间件,其核心在于硬件抽象、实时性保障与跨语言兼容。GrandDog_Driver作为典型的老派Windows驱动套件,依托Delphi的VCL事件调度、VC++的内核级I/O控制及VB6的快速界面封装,构建出低延迟、高稳定性的串口/CAN/IO通信能力。它不依赖现代运行时环境,却在Win10 LTSC、工控机、老旧PLC网关等受限场景中持续发挥不可替代的技术价值。尤其适合电梯监控、实验室仪器数据采集、RS485温湿度传感等对系统稳定性要求严苛的落地应用。本文围

weixin_29191081的博客 263

VB源代码-CRC32自校验

VB源代码-CRC32自校验

CRC32算法(VB)

VERSION 1.0 CLASSBEGIN  MultiUse = -1  TrueENDAttribute VB_Name = "cCRC32"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = TrueAttribute VB_PredeclaredId = FalseAttribute VB_Exposed = Fal

张彤的专栏 3170

使用VB6.0实现CRC32计算

【代码】使用VB6.0实现CRC32计算。

千月星跡 776

CRC原理-我学习CRC32CRC16、CRC 原理和算法的总结(与WINRAR 结果一致).pdf

我学习CRC32CRC16、CRC 原理和算法的总结(与WINRAR 结果一致),里面详细描述了CRC原理,应用,及相应推导过程,是CRC讲得最全的,从入门到高阶及C语言的例程都有!~~

VC实现一个库,并用VB(Visual Basic)来调用的方法,包括传递数组的方法

因为工作需要,最近了一个VB小软件,很多功能已经用VC好了,如果再用VB整一遍太麻烦。最好的方法将VC程序编译成dll库,然后用VB调用就行了。虽然VB已经很老了,但是做一些小软件还是非常方便的,下面就来介绍如何将VC程序实现的crc校验程序编译成dll库,接下来介绍如何使用VB来来用,使用时注意参数要对应,特别是特别是数组传递要对应起来。 第一步:使用VC编译dll库    1.启动V

纵横千里 捭阖四方 的专栏 1769

vb6传递数组给VC++

虽然VB已经很老了,但是做一些小软件还是非常方便的,下面就来介绍如何将VC程序实现的crc校验程序编译成dll库,接下来介绍如何使用VB来来用,使用时注意参数要对应,特别是特别是数组传递要对应起来。前两个可以通过VC的sourcefile和headfile自动添加文件后缀,而crc16_ccitt.def文件建立的时候选择新建文本文件,然后将后缀.edf就行了。crc16_ccitt,cpp文件的内容为如下所示,这是一个完整的CPP程序,除了没有main函数入口。上面只声明了一个函数cal_crc

619

C++调用dll

今天在研究怎么在vc调用动态dll的问题,看了一个下午,总算有些眉目。 首先来说说调用的原理: 调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同。Windows提供了两种将DLL映像到进程地址空间的方法:隐式调用(通过lib和头文件)和显式调用(只通过提供的dll文件)。下面对这两种方式在vc中如何调用做详细的说明:

yusongwhu的专栏 6265

dll调用

DLL调用  调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同。Windows提供了两种将DLL映像到进程地址空间的方法:  1、隐式的加载时链接   这种方法需要DLL工程经编译产生的LIB文件,此文件中包含了DLL允许应用程序调用的所有函数的列表,当链接器发现应用程序调用了LIB文件列出的 某个

yuehongliang的专栏 896

VB下的CRC32编码类模块

VB下的CRC32编码类模块的建立方法讲解。

VCCRC 计算程序 CRC32测试.rar

VCCRC 计算程序 CRC32测试程序源代码,处理CRC循环校验所需要的方法,可选择临时计算,或者一次计算出数值查表以增加速度,文件中定义了两个函数,用以执行对数据段的CRC32CRC16循环冗余校验,另外还有创建CRC16、CRC32所需要的Table,aPoly[in]:创建表所需要的多项式。

CRC32CRC16校验程序C++中用DLL实现(附源码)

DLL中包含CRC32以及CRC16的校验函数,加载DLL并包含CRC.H头文件后就可在您自己的程序中自由调用CRC32CRC16的校验函数,获取CRC校验码。资源附有CRC函数实现的源代码供参考

C#语言编CRC校验DLL(源码)

CRC校验DLL(源码),里面有用到正则表达式检测输入数据的合法性

CRC16校验DLL调用

DELPHI开发的CRC16校验DLL,可供其他程序调用,PB调用测试正常,校验码的高低位需要对调一下

动态链接库调用方式

首先来说说调用的原理: 调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同。Windows提供了两种将DLL映像到进程地址空间的方法:隐式调用(通过lib和头文件)和显式调用(只通过提供的dll文件)。下面对这两种方式在vc中如何调用做详细的说明: a.隐式: 这种方法需要DLL工程经编译产生的LIB文件,此文件中包含

u010434655的专栏 1071

c++/c语言中如何调用DLL

参考网站如下: ​http://blog.csdn.net/yusongwhu/article/details/7577461 http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html 具体内容如下: (1)篇​ 今天在研究怎么在vc调用动态dll的问题,看了一个下午,总算有些眉目。 首先来说说调...

weixin_30246221的博客 1084
上一篇: 用VB对磁盘的物理扇区数据读/写操作
下一篇: 获取从“资源管理器”发送到 Clipboard 里面的文件列表
VirtualAlloc
博客等级 码龄24年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值