读取二代身份证上面的相片,这个函数GetBmp(char * Wlt_File,int intf) 怎么用?
GetBmp(char * Wlt_File,int intf) wlt文件解码成bmp文件;
四、函数说明
原 型:int GetBmp(char * Wlt_File,int intf);
说 明:本函数用于将wlt文件解码成bmp文件。
参 数:Wlt_File ----- wlt文件名
intf ----- 阅读设备通讯接口类型(1—RS-232C,2—USB)
返 回 值:生成*.bmp文件和以下返回信息
值 意义
1 相片解码解码正确
0 调用sdtapi.dll错误
-1 相片解码错误
-2 wlt文件后缀错误
-3 wlt文件打开错误
-4 wlt文件格式错误
-5 软件未授权
-6 设备连接错误
五、注意事项
1、 wlt文件的后缀要固定为”.wlt”,如:xp.wlt,相片解码成xp.bmp;
2、 本函数要与sdtapi.dll关联使用,并确认通讯端口处于关闭状态;
这是读取相片的文档,我现在把身份证上面的信息读取出来了 , 就是图片这里出了问题,图片是乱码,不知道GetBmp()第一个参数是什么值?
这是代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
static extern int SDT_StartFindIDCard(int iPort, byte[] pucManaInfo, int iIfOpen);
[DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
static extern int SDT_OpenPort(int iPort);
[DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
static extern int SDT_ClosePort(int iPort);
[DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
static extern int SDT_SelectIDCard(int iPort, byte[] pucManaMsg, int iIfOpen);
[DllImport("WltRS.dll", CallingConvention = CallingConvention.StdCall)]
static extern int GetBmp(string pucPHMsg, int intf);
[DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
static extern int SDT_ReadBaseMsg(int iPort, byte[] pucCHMsg, ref UInt32 puiCHMsgLen, byte[] pucPHMsg, ref UInt32 puiPHMsgLen, int iIfOpen);
private void button1_Click(object sender, EventArgs e)
{
byte[] CardPUCIIN = new byte[255];
byte[] pucManaMsg = new byte[255];
byte[] pucCHMsg = new byte[255];
byte[] pucPHMsg = new byte[3024];
UInt32 puiCHMsgLen = 0;
UInt32 puiPHMsgLen = 0;
int st = 0;
int iRet;
int iPort = 1001;
int iIfOpen = 0;
if (iIfOpen == 0)
{
iRet = SDT_OpenPort(iPort);
}
//读卡操作
st = SDT_StartFindIDCard(iPort, CardPUCIIN, iIfOpen);
if (st == 0x9f)//128
{
st = SDT_SelectIDCard(iPort, pucManaMsg, iIfOpen);
if (st != 0x90) return;//129
st = SDT_ReadBaseMsg(iPort, pucCHMsg, ref puiCHMsgLen, pucPHMsg, ref puiPHMsgLen, iIfOpen);
if (st != 0x90) return;
}
else
{
if (iIfOpen == 0)
{
//关闭
SDT_ClosePort(iPort);
return;
}
}
if (iIfOpen == 0)
{
//关闭
SDT_ClosePort(iPort);
}
就这个函数不知道怎么用
//int img = GetBmp(Application.StartupPath + @"\xp.wlt", 2);
//int img = GetBmp(pucPHMsg,2);
Card card = new Card(pucCHMsg,pucPHMsg);
//显示结果
this.txtname.Text = card.Name;
string nations = card.Nation;
if (nations == "01")
nations = "汉族";
else
nations = "其他民族";
this.txtnation.Text = nations;
string sexs = card.Sex;
if (sexs == "1")
sexs = "男";
else if (sexs == "2")
sexs = "女";
else
sexs = "其他";
this.txtsex.Text = sexs;
this.txtdate.Text = card.Date;
this.txtaddres.Text = card.Address;
this.txtcardId.Text = card.CardId;
this.txtorgan.Text = card.Organ;
this.txtbegin.Text = card.Begin + "-" + card.End;
}
}
class Card
{
#region 字段
//身份证号码
private string cardId;
public string CardId
{
get { return cardId; }
set { cardId = value; }
}
//姓名
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
//性别
private string sex;
public string Sex
{
get { return sex; }
set { sex = value; }
}
//民族
private string nation;
public string Nation
{
get { return nation; }
set { nation = value; }
}
//出生日期
private string date;
public string Date
{
get { return date; }
set { date = value; }
}
//地址
private string address;
public string Address
{
get { return address; }
set { address = value; }
}
//发证机关
private string organ;
public string Organ
{
get { return organ; }
set { organ = value; }
}
//起始日期
private string begin;
public string Begin
{
get { return begin; }
set { begin = value; }
}
//截止日期
private string end;
public string End
{
get { return end; }
set { end = value; }
}
//图片
private Image picture;
public Image Picture
{
get { return picture; }
set { picture = value; }
}
#endregion
public Card(byte[] pucCHMsg, byte[] pucPHMsg)
{
这里返回所有的信息就相片是乱码,是一个正方形
string messge = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg);
this.name = messge.Substring(0, 15);
messge = messge.Substring(15);
this.sex = messge.Substring(0, 1);
messge = messge.Substring(1);
this.nation = messge.Substring(0, 2);
messge = messge.Substring(2);
this.date = messge.Substring(0, 8);
messge = messge.Substring(8);
this.address = messge.Substring(0, 35);
messge = messge.Substring(35);
this.cardId = messge.Substring(0, 18);
messge = messge.Substring(18);
this.organ = messge.Substring(0, 15);
messge = messge.Substring(15);
this.begin = messge.Substring(0, 8);
messge = messge.Substring(8);
this.end = messge.Substring(0, 8);
messge = messge.Substring(8);
}
}
}
我该怎么得到这张相片
相关推荐
JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requ
JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requirements
基于Matlab的自动睡眠粒状结构检测算法,从脑电信号中进行。.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
JEP375 2.5D_3D Silicon thinned wafers with Through Silicon Vias (TSV’s) and Backside Redistribution
JEP375 2.5D_3D Silicon thinned wafers with Through Silicon Vias (TSV’s) and Backside Redistribution Layer (RDL).pdf
考虑供电可靠性与算力柔性的数据中心园区源‑储‑荷一体化规划研究(Matlab代码实现)
考虑供电可靠性与算力柔性的数据中心园区源‑储‑荷一体化规划研究(Matlab代码实现)内容概要:本文围绕“考虑供电可靠性与算力柔性的数据中心园区源-储-荷一体化规划”展开研究,提出了一种综合能源系统优化规划方法。该方法充分考虑数据中心对供电可靠性的高要求以及算力负载的灵活性特征,将电力供应、储能配置与计算负荷进行协同优化。通过建立数学模型,整合光伏发电、储能系统与数据中心负荷调度,利用Matlab代码实现优化求解,旨在提升能源利用效率、降低运营成本并增强系统韧性。研究涵盖了对新能源出力不确定性、负荷波动以及储能动态行为的建模与仿真分析,最终验证了所提一体化规划方案在提高供电可靠性和实现算力资源柔性调度方面的有效性。; 适合人群:具备一定电气工程、能源系统或计算机科学背景,从事数据中心、智能电网、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 为数据中心园区的绿色低碳与高可靠运行提供规划设计方案;② 实现可再生能源的高效消纳与储能系统的优化配置;③ 探索算力作为柔性负荷参与电力系统互动的潜力,支撑新型电力系统建设。; 阅读建议:此资源以Matlab代码为核心,辅以理论模型,建议读者在理解基本原理的基础上,动手运行和调试所提供的代码,通过修改参数和场景设置来深入掌握一体化规划的优化逻辑与关键技术细节。
歌曲爆款传播预测数据集10000首曲目Spotify音频特征机器学习
本数据集为合成音乐数据,包含2010至2025年间10000首曲目的Spotify风格音频特征与明确的爆款(viral)目标标签。现有音乐数据集常缺少可用建模目标或存在授权限制,本数据集提供了干净、字段完整、可直接用于监督学习的基准语料。字段涵盖节奏、能量、可舞性、声学度、效价等音频属性,以及曲目元数据与年份信息,目标列viral基于传播表现定义,可直接用于二分类建模。适合开展爆款歌曲预测、音频特征与传播关系分析、年代音乐风格演变可视化、特征重要性排序等分析任务,也可作为分类、回归与特征工程教学的演示数据。数据结构清晰、无缺失值,适合数据科学课程、音乐媒体分析与推荐算法原型验证使用。


