///               
        /// </param>
        /// <returns></returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_CommOpenWithBaud", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
       public static extern IntPtr M100A_CommOpenWithBaud(string port, uint baudRate);

        /// <summary>
        /// 关闭当前打开的串口
        /// </summary>
        /// <param name="comHandle">要关闭的串口的句柄</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_CommClose", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern int M100A_CommClose(IntPtr comHandle);

        /// <summary>
        /// 设置 M100A 的通讯波特率
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="baud">波特率选项
        ///                     =0x33, 设置波特率为9600
        ///                    =0x34, 设置波特率为19200
        ///                     =0x35, 设置波特率为38400
        /// </param>
        /// <param name="recrodInfo">存储该条命令的通讯记录
        ///                             格式如下: TX: 02 00 02 46 33 03 76
        ///                             RX: 06
        ///                             TX: 05
        ///                            RX: 02 00 03 50 46 33 03 27
        /// </param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_SetCommBaud", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern int M100A_SetCommBaud(IntPtr comHandle, bool bHasMacAddr, byte macAddr, byte baud, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recrodInfo);

        /// <summary>
        /// M100A 复位命令
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="pm">
        /// 复位选项
        ///=0x30,初始化读卡器,有卡弹卡(不上传版本信息)
        ///=0x31,初始化读卡器,有卡回收(不上传版本信息)
        ///=0x32,初始化读卡器,有卡停在读磁卡位置(不上传版本信息)
        ///=0x33,初始化读卡器,有卡停在读IC 卡位置(不上传版本信息)
        ///=0x34,初始化读卡器,不动作(上传版本信息)
        /// </param>
        /// <param name="verCode">存储的是机器的版本信息,如“TTCE_M100A_V*.**”</param>
        /// <param name="recordInfo">存储该条命令的通讯记录</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_Reset", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
       public static extern int M100A_Reset(IntPtr comHandle, bool bHasMacAddr, byte macAddr, byte pm, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] verCode, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recordInfo);

        /// <summary>
        /// 读取卡片在机器里的位置
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="cardStates">CardStates[0],表示通道卡片位置,具体含义如下
        ///=0x30:通道无卡
        ///=0x31:读磁卡位置有卡
        ///=0x32:IC卡位置有卡
        ///=0x33:前端夹卡位置有卡
        ///=0x34:前端不夹卡位置有卡
        ///=0x35:卡不在标准位置(标准位置指的是上面5个位置
        ///(0x30~0x34).当卡不在标准位置时,可以通过移动卡片
        ///命令将卡移动到标准位置)
        ///=0x36:卡片正在移动中
        ///=0x37:射频卡位置有卡
        ///CardStates[1],表示卡箱卡片状态
        ///=0x30:卡箱无卡
        ///=0x31:卡箱卡片不足,提醒需要加卡
        ///=0x32:卡箱卡片足够</param>
        /// <param name="recordInfo">存储该条命令的通讯记录</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_CheckCardPosition", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
       public static extern int M100A_CheckCardPosition(IntPtr comHandle, bool bHasMacAddr, byte macAddr, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] cardStates, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recordInfo);

        /// <summary>
        /// 读每个传感器的状态
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="sensorStates">9组传感器的状态值(各个传感器位置分步请查看演示程序)
        ///上传顺序:C_S1,C_S2,C_S3,C_S4,C_S5,C_S6,B_S1,B_S2,B_S3
        ///=0x30:无卡。
        ///=0x31:有卡。</param>
        /// <param name="recordInfo">存储该条命令的通讯记录</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_CheckSensorStates", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern int M100A_CheckSensorStates(IntPtr comHandle, bool bHasMacAddr, byte macAddr, byte[] sensorStates, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recordInfo);

        /// <summary>
        /// 读前6组传感器的电压
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="sensorVoltage">存储前6组传感器的电压信息,计算方法请参照通讯协议中“读取传
        ///感器电压”指令</param>
        /// <param name="recordInfo">存储该条命令的通讯记录</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_CheckSensorVoltage", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern int M100A_CheckSensorVoltage(IntPtr comHandle, bool bHasMacAddr, byte macAddr, byte[] sensorVoltage, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recordInfo);

        /// <summary>
        /// 进卡设置,为立即返回方式,卡片一旦进入,则命令失效,卡片是否到具体位置,必须通过“读
        /// 取卡片在机器里的位置”命令来判断
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="enterType">具体有效值如下
        ///0x30: 禁止进卡(将取消先前设置好的进卡指令)
        ///0x31: 使能进卡,进卡后停卡在读磁卡位置
        ///0x32: 使能进卡,进卡后停卡在读IC卡位置
        ///0x33: 使能进卡,进卡后将卡回收到回收箱
        ///0x34: 使能进卡,进卡后停卡在前端夹卡位置
        ///0x35: 使能进卡,进卡后将卡弹出</param>
        /// <param name="recordInfo">存储该条命令的通讯记录</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_EnterCard", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
       public static extern int M100A_EnterCard(IntPtr comHandle, bool bHasMacAddr, byte macAddr, byte enterType, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recordInfo);

        /// <summary>
        /// 卡片传动指令
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="pm">卡片传动的选项,有效值如下:
        ///0x30: 将卡片传动到读磁卡位置
        ///0x31: 将卡片传动到IC卡位置
        ///0x32: 将卡片传动到前端夹卡位置
        ///0x33: 将卡片弹出
        ///0x34: 将卡片回收到回收箱</param>
        /// <param name="recordInfo">存储该条命令的通讯记录</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_MoveCard", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
       public static extern int M100A_MoveCard(IntPtr comHandle, bool bHasMacAddr, byte macAddr, byte pm, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recordInfo);

        /// <summary>
        /// 向机器发送EOT,取消命令
        /// </summary>
        /// <param name="comHandle">已经打开的串口的句柄</param>
        /// <param name="bHasMacAddr">是否为多机通讯版本(使用方式请参文档前部“接口函数公有的参数说明“)</param>
        /// <param name="macAddr">机器的地址,有效取值(0 到15)</param>
        /// <param name="recordInfo">存储该条命令的通讯记录</param>
        /// <returns>正确=0,错误=非0</returns>
        [DllImport("M100A_DLL.dll", EntryPoint = "M100A_Eot", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
       public static extern int M100A_Eot(IntPtr comHandle, bool bHasMacAddr, byte macAddr, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] recordInfo);

       public static byte READ_CARD_LOCATION = 0x30;//将卡片传动到读磁卡位置
        public static byte IC_CARD_LOCATION = 0x31;// 将卡片传动到IC卡位置
       public static byte RECOVERBOX_CARD_LOCATION = 0x34;// 将卡片回收到回收箱
       public static byte FRONTEND_CARD_LOCATION = 0x32;//将卡片传动到前端夹卡位置
       public static byte POB_CARD = 0x33;//将卡片弹出

    }
}

总结:这个”M100A_DLL.dll”文件要放在测试项目的根目录下,编译一下就能用了,注意一下!

C++函数转换成C#函数的更多相关文章

  1. 将大量ASCII码值转换成字符函数CHR()的小技巧

    一.在学习命令执行漏洞的过程中,遇到以下情况: 当服务器上传不了马或者马被过滤的时候,我们可以迂回一下,通过执行写马命令到服务器,在服务器里面写马,该命令是通过ascii编码过的命令,防止被过滤. 1 ...

  2. PHP实现金额数字转换成大写函数

    <?php header("Content-Type:text/html;charset=utf-8"); function num_to_upper($num) { $d ...

  3. 1:时间戳转换成年月日函数,2:url截取参数方法,3:弹窗自定义方法 4:点击按钮加入购物车

    最近一直在使用vue.js来构建项目,先分享一下一些简单可复用的函数. 1:时间戳转换Date.prototype.format = function(fmt){ //author: yumeiqia ...

  4. 通过 cross apply 实现函数转换成表并与原表进行关联

    create table tb_cross_apply ( id int identity, multivalue ) ) insert into tb_cross_apply VALUES ('A| ...

  5. [UE4]Cast to 转换成纯函数

    这样就变成不需要执行线了,可以直接得到转换结果

  6. F# 可以把几个函数组合成新函数

    C#能做的,F#基本都能做,但F#能做的,C#未必能做. F#中的函数可以把几个函数组合起来使用.下面的例子是把由 function1 和 function2 这两个函数通过运算符“>>” ...

  7. Python学习【第5篇】:Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器、模块)

    一.为什么要使用函数? 1.避免代码重用 2.提高代码的可读性 二.函数的定义与调用 1. def  函数名(参数1,参数2): ''' 函数注释''' print('函数体') return 返回值 ...

  8. 如何将PHP对象数组转换成普通数组

    /** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...

  9. Python之函数的递归、匿名函数、内置函数

    一.函数的递归 ''' 1 什么是函数递归 函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调 ...

随机推荐

  1. Hibernate - 使用注解完成映射

    除了使用XML配置来映射对象和数据库表,还可以使用注解来完成持久化.使用注解需要导入Hibernate Annotations扩展包 @Entity -加在类的前面,将类声明为持久化类. -javax ...

  2. Android 自学之星级评分条RatingBar

    星级评分条(RatingBar)与拖动条十分相似,他们还有共同的父类AbsSeekBar.实际上星级评分条和拖动条的用法和功能都十分的接近:他们都允许用户通过拖动来改变进度.RatingBar与See ...

  3. nyoj 86 找球号(一)

    找球号(一) 时间限制:3000 ms  |            内存限制:65535 KB 难度:3   描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0& ...

  4. MySQL 세자리 마다 콤마 찍기

    MySQL에서 세자리 마다 콤마를 찍으려면 FORMAT 함수를 이용하시면 됩니다. FORMAT( 컬럼명, 소수점이하 자리수 ) 여기서 컬럼의 자료형이 varchar와 같은 문자형이 ...

  5. 【转】MyBatis学习总结(一)——MyBatis快速入门

    [转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...

  6. 用友NC V6.3打造集团企业高效信息平台

    近年来,随着互联网快速发展,信息化管理的应用也越来越普及,信息化建设已经深入到很多企业的核心业务,而且为了确保业务稳定.可靠并快速.有效地 开展,企业经常会运用多个信息系统进行辅助支撑,但是,许多企业 ...

  7. Base64 编码

    Base64 字母表 Base64 编码将一个 8 位字节序列拆成 6 位的片段,并为每个 6 位的片段分配一个字符,这个字符是 Base64 字母表中的 64 个字符之一. Wert Zeichen ...

  8. JS 日期工具类-基于yDate

    源码下载 前言:最近在用到JS日期操作时,发现有一些不方便,于是搜素了一些网上的资料,基于一个开源工具类-yDate 进行了个性化定制,封装成了一个日期工具类工具函数大概介绍:1.普通的日期操作2. ...

  9. SQL Server 可疑的解决办法

    SQL SERVER 数据库状态为“可疑”的解决方法 --MyDB为修复的数据名 USE MASTER GO SP_CONFIGURE RECONFIGURE WITH OVERRIDE GO ALT ...

  10. NDIS小鱼防火墙之拦截指定QQ登录

    因为QQ窗口是自绘窗口,gif录制软件不能正常录制到窗口,我就截图功能把窗口显示出来. 下面我的演示,我登录2个QQ号,一个被我指定拦截,让他不能够登录.另一个却可以正常的工作..看我的COOL的演示 ...