日期:2014-05-18 浏览次数:21181 次
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BLL;
using System.Runtime.InteropServices;
using DevComponents.DotNetBar;
namespace PlatForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //c++函数强制声明
        [DllImport("mi.dll", EntryPoint = "API_OpenComm")]
        public static extern IntPtr API_OpenComm(int nCom, int nBaudrate);
        [DllImport("mi.dll", EntryPoint = "API_CloseComm")]
        public static extern bool API_CloseComm(IntPtr commHandle);
        [DllImport("mi.dll", EntryPoint = "API_ControlBuzzer")]
        public static extern int API_ControlBuzzer(IntPtr commHandle, int DeviceAddress, byte freq, byte duration, ref byte buffer);
        [DllImport("mi.dll", EntryPoint = "API_MF_Read")]
        public static extern int API_MF_Read(IntPtr commHandle, int DeviceAddress, byte mode, byte blk_add, byte num_blk, ref byte snr, ref byte buffer);
        private void Form1_Load(object sender, EventArgs e)
        {
            Program.Port = API_OpenComm(4, 9600);
            if (Program.Port.ToInt32() == 0)
            {
                labelControl2.Visible = false;
                labelControl3.Visible = true;
                buttonX1.Visible = true;
                return;
            }
            byte pBuf = new byte();
            Program.G_start = API_ControlBuzzer(Program.Port, 0, 3, 1, ref pBuf);
            if (Program.G_start == 0)
            {
                labelControl2.Visible = true;
                labelControl3.Visible = false;
                buttonX1.Visible = false;
            }
            //启动时间轴
            timer1.Interval = 1000;
                timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
                byte[] hex = new byte[16];
                long ret = long.Parse("281474976710655");
                hex = BitConverter.GetBytes(ret);
                byte[] hex1 = new byte[16];
                byte[] hex2 = new byte[16];
                //Array.Clear(hex1, 0, 16);
                byte[] data = new byte[16];
                
                int idata = API_MF_Read(Program.Port, 0, 0, 10, 1, ref hex[0], ref data[0]);
                //无卡接触时,循环等待
                if (idata != 0)
                {
                    return;
                }
                //取卡号
                string s = BitConverter.ToInt64(data, 0).ToString();
                member mem = new member();
                //卡有效性验证
                timer1.Stop();
                if (mem.Exists(Convert.ToInt32(s)))
                {
                    
                    DialogResult result;
                    result = MessageBoxEx.Show("此卡存在数据,是否重写", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (result == DialogResult.No)
                    {
                        
                        timer1.Start();
                        return;
                    }
                }
                Form3 form3 = new Form3();
                if ((form3.ShowDialog() == DialogResult.OK))
                {
                    timer1.Start();
                    return;
                }
                timer1.Start();
                return;
        }
        private void buttonX1_Click(object sender, EventArgs e)
        {
            Form1_Load(sender, e);
        }
    }
}
------解决方案--------------------
厂