概述
因为是C#,所以平台肯定是.NET了。
之前因为一个小小的业务需要接触了下密码键盘的操作。其实就是简单的获取用户输入密码的操作,没碰到什么大的问题,但是查资料的过程中还是感觉查到的东西挺多的,是那种越查越多,但是又不是很关键的东西。
在调用DLL中的方法的时候,我们一般要对照函数说明来把C/C++中的类型转换为.NET中相对应的类型,而且方法必须声明为静态外部函数,即加上public extern static声明头.如果不加public ,函数默认为私有函数,调用就会出错。
类型对照表:
Win32 Types
|
CLR Type
|
char, INT8, SBYTE, CHAR
|
System.SByte
|
short, short int, INT16, SHORT
|
System.Int16
|
int, long, long int, INT32, LONG32, BOOL , INT
|
System.Int32
|
__int64, INT64, LONGLONG
|
System.Int64
|
unsigned char, UINT8, UCHAR , BYTE
|
System.Byte
|
unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR , __wchar_t
|
System.UInt16
|
unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT
|
System.UInt32
|
unsigned __int64, UINT64, DWORDLONG, ULONGLONG
|
System.UInt64
|
float, FLOAT
|
System.Single
|
double, long double, DOUBLE
|
System.Double
|
使用:已密码键盘获取密码输入为例
函数说明:int __stdcall inputpassword(unsigned char *param)
.NET中使用:
声明:
[DllImport("COM DLL path/file")]
unsafe public static extern int inputpassword(byte* param);这里我们用BYTE对应char*
调用:放在哪里自己决定
byte[] password = new byte[6];\密码键盘输入为6位,所以长度设为6就可以了
unsafe
{
//fixed的MSDNhttp://msdn.microsoft.com/zh-cn/library/f58wzh21(VS.80).aspx
fixed(byte* array=password ) //这里获取的是password 的地址,并FIX,就是固定“fixed 语句禁止垃圾回收器重定位可移动的变量”
{
int ret_value = inputpassword(array);//这里传入的是指针,因为unsigned char *param就是一个指针。
}
}
语句执行后的结果是输入的密码会保存在password 字节数组中,之后就是调用相应的方法把password 转换成6位密码字符了。
转载于:https://www.cnblogs.com/ruanbl/archive/2009/05/31/1493252.html
最后
以上就是积极红牛为你收集整理的c# 获取串口设备的输入(unsigned char *和 char*)的全部内容,希望文章能够帮你解决c# 获取串口设备的输入(unsigned char *和 char*)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复