我要做一个充值机的充值程序,可以读卡充值,充值机不是用串口而是用的USB,我要怎么样才能把命令帧通过USB发送给卡机,然后在接收卡机回传的数据呢。
解决方案 »
- 使用C#如何从指定服务器上下载指定文件到本地
- 如何用递归遍历一组二叉数字组?
- 啊,我发现了《C#入门经典》中的矛盾的说法,快进来讨论讨论
- DataGridViewCheckBoxColumn的值无法更新,DataGridView绑定数据为List<MyObject>
- c#有zip文件的类没有
- 关于读取XML文档的问题
- GridView可不可以分几行几列显示
- 求购 .net的 游戏点卡直储技术
- C# 将DataTable里的数据导出到excel的代码,出了个问题谁能帮我
- c#调用远程JS文件中的函数
- 急急急 C# 启动外部EXE,指定工作路径,调试可以用.打包软件后,EXE无法启动
- class 中的 <M> 是什么意思
DIGCF_PRESENT = 0x2, DIGCF_ALLCLASSES = 0x4, DIGCF_PROFILE = 0x8, DIGCF_DEVICEINTERFACE = 0x10 } //获取设备文件 [DllImport("kernel32.dll", SetLastError = true)] private static extern int CreateFile( string lpFileName, // file name uint dwDesiredAccess, // access mode uint dwShareMode, // share mode uint lpSecurityAttributes, // SD uint dwCreationDisposition, // how to create uint dwFlagsAndAttributes, // file attributes uint hTemplateFile // handle to template file ); //读取设备文件 [DllImport("Kernel32.dll",SetLastError = true)] private static extern bool ReadFile ( IntPtr hFile, byte[] lpBuffer, uint nNumberOfBytesToRead, ref uint lpNumberOfBytesRead, IntPtr lpOverlapped ); //释放设备 [DllImport("hid.dll")]
static public extern bool HidD_FreePreparsedData(ref IntPtr PreparsedData); //关闭访问设备句柄,结束进程的时候把这个加上保险点 [DllImport("kernel32.dll")] static public extern int CloseHandle(int hObject); //接下来是访问设备的代码 //代码暂时没有整理,传入参数是设备序号, //有些USB设备其实有很多HID设备,就是一个接口上有几个设备,这个时候需要 //用index++来逐个循环,直到获取设备返回false后,跳出去,把获取的设备 //路径全记录下来就好了,我这里知道具体设备号,所以没有循环,浪费我时间 //定于句柄序号和一些参数,具体可以去网上找这些API的参数说明,后文我看能不能 把资料也写上去 int HidHandle = -1; public const uint GENERIC_READ = 0x80000000; public const uint GENERIC_WRITE = 0x40000000; public const uint FILE_SHARE_READ= 0x00000001; public const uint FILE_SHARE_WRITE = 0x00000002; public const int OPEN_EXISTING = 3; private void UsBMethod(int index) { HidD_GetHidGuid(ref guidHID); hDevInfo = SetupDiGetClassDevs(ref guidHID, 0, IntPtr.Zero, DIGCF.DIGCF_ PRESENT | DIGCF.DIGCF_DEVICEINTERFACE); int bufferSize = 0; ArrayList HIDUSBAddress = new ArrayList();