求解一个比较的难题!

samfeng_2003 samfeng_2003 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在开发一个考勤机的接口程序!因为动态连接库是用dephi开发的,我不太想用dephi开发所以就用c#在写它的程序,但是现在遇到一个问题!

比如在动态库EastRiver的库里有两个这样的函数


第一个
ReadClockRecordTotal: 读设备已经存储的记录数

语法:
function ReadClockRecordTotal(hPort: THandle; var data: Integer): Boolean;

参数说明:
hPort: 端口句柄, 调用OpenCommPort函数得到,需要联机
data: 返回记录数量

返回变量: 如果返回True表示成功,如果返回False表示失败。

第二个
ReadStandardRecord: 读所有刷卡记录

语法:
function ReadStandardRecord(hPort: THandle; Data: PChar; timeString: PChar; var mark: Char;
var flag: Integer; var cardTimes: Integer; var cardGroup: Integer): Boolean;

参数说明:
hPort: 端口句柄, 调用OpenCommPort函数得到,需要联机
data: 读回的卡号字符串, 缓冲区需大於20字节长度
timeString: 读回的14位刷卡时间字符串, 格式为yyyymmddhhmmss, 缓冲区需大於20字节长度
mark: 读卡机标识字符.
flag: 存储卡的结果, 对应二进制数各位的意义如下: flag = 0 : 表示为正常卡 flag.0 = 1 : 表示为非法门禁卡 flag.1 = 1 : 表示为非法考勤卡 flag.2 = 1 : 表示为黑名单卡
cardTimes: 发卡次数, 0-15
cardGroup: 卡的组别, 0-255

返回变量: 如果返回False表示当前记录读取失败,如果返回True表示成功

然后我在C#的项目里面做了个EastRiver类,然后用
[DllImport("EastRiver.dll")] public static extern bool ReadStandardRecord(int hPort,ref string Data,ref string timeString,ref string mark,ref int flag,ref int cardTimes,ref int cardGroup);//读刷卡记录(^2G)

[DllImport("EastRiver.dll")] public static extern bool ReadClockRecordTotal(int hPort,ref int data);//读设备已经存储的考勤记录数

连对接动态库,但是我在程序里用

string data="";
string timeString="";
string mark="";
int flag=0;
int cardTimes=0;
int cardGroup=0;
if(EastRiver.ReadStandardRecord(hport,ref data,ref timeString,ref mark,ref flag,ref cardTimes,ref cardGroup))//提取考勤数据
{
string sql="insert into n_kqjlu(cardid,sjian,skjg) values('"+data.ToString()+"','"+timeString.ToString()+"','"+num.ToString()+"')";
SqlDataAdapter myDataAdapter= new SqlDataAdapter(sql,myConnection);
DataSet dt=new DataSet();
myDataAdapter.Fill(dt);
RefreshDataGrid(data.ToString(),num.ToString(),timeString.ToString(),flag);
}

的时候不能提取到正常的卡号,出现string类型的数据都为"",因此我想是不是dephi里面的pchar类型到C#里面的string类型,我是不是转错了!第一个函数就一点问题都没有!int转int就不会出现为空或者出错的情况!
...全文

相关推荐

YeeCOM DTU连接OneNet平台配置教程详细版

1:数据收发,DTU会自动转换为MQTT协议数据进行收发,对于DTU使用者来说都是透明传输,无需关心具体的MQTT协议转换过程,大大简化了使用者的工作量。与服务器端建立TCP连接后,并成功登录,设备云会定期发送查询命令,设备一分钟内无回复,服务器会断开连接。具体数据交互参考文档:文档中心/OneNET物联网开放平台/产品开发/设备接入/设备开发/MQTT协议接入/最佳实践/物模型数据交互。正常连接上云平台后,通过测试,可以看到DTU串口和平台都可以正常接收和发送数据。

在物联网的海洋里面游啊游

STM32与4G DTU的阿里云MQTT透传实战指南

本文详细介绍了如何将STM32单片机与4G DTU模块结合,实现数据通过MQTT协议稳定透传至阿里云物联网平台的完整实战流程。内容涵盖硬件连接、DTU配置、STM32程序编写、阿里云平台操作及MQTT协议深度解析,旨在帮助开发者快速构建高可靠性的物联网终端设备。

爱摄影的郭同学

产业园区运营负责人如何提升园区内企业技术需求的响应效率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

产业园区运营负责人如何精准对接企业技术需求与科研资源?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

职业技能竞赛技术文件 评分采用主观评价与客观测量相结合的方式,并依据特定优先级处理成绩并列情况

; 阅读建议:此资源以开发简化版Spring学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。

洛卡纳哈
评论 10
收藏 已收藏
分享
返回顶部
samfeng_2003
C# 111,129 成员 642,538 内容