我目前正在使用Motorola MC9500
的{{1}}的Windows移动应用程序。Windows Mobile 6.5
。
我已经尝试使用Symbol的EMDK
库来访问设备的内置运动传感器而没有任何运气。
EMDK for .NET v2.7中有Symbol.Sensor
类库,应该访问所有内置传感器,但我不知道如何使用它。
Symbol.Sensor.SensorManager manager = new Symbol.Sensor.SensorManager();
我在这里得到一个MissingMethodException
例外,说......
“找不到PInvoke DLL
SensorsAPI.dll
。”
如何使用C#访问运动传感器?
如果还有其他选择,请告诉我们。
答案 0 :(得分:3)
我将发布一个dllImport示例作为@HemendraSharma评论的继续。以上代码是为移动设备编写的,用于更改系统时间。
using System;
using System.Runtime.InteropServices;
namespace changeHour
{
public class cDateTime
{
[StructLayout(LayoutKind.Sequential)]
private struct SystemTime
{
public ushort uYear;
public ushort uMonth;
public ushort uDayOfWeek;
public ushort uDay;
public ushort uHour;
public ushort uMinute;
public ushort uSecond;
public ushort uMilliseconds;
public SystemTime(
ushort uYear,
ushort uMonth,
ushort uDay,
ushort uHour,
ushort uMinute,
ushort uSecond)
{
this.uYear = uYear;
this.uMonth = uMonth;
this.uDayOfWeek = 0;
this.uDay = uDay;
this.uHour = uHour;
this.uMinute = uMinute;
this.uSecond = uSecond;
this.uMilliseconds = 0;
}
}
[DllImport("Coredll.dll")]
private static extern bool SetLocalTime(ref SystemTime st);
[DllImport("Coredll.dll")]
private static extern uint SetSystemTime(ref SystemTime st);
public static bool SetDateTime(
int iYear,
int iMonth,
int iDay,
int iHour,
int iMinute,
int iSecond)
{
SystemTime st =
new SystemTime
(
Convert.ToUInt16(iYear),
Convert.ToUInt16(iMonth),
Convert.ToUInt16(iDay),
Convert.ToUInt16(iHour),
Convert.ToUInt16(iMinute),
Convert.ToUInt16(iSecond)
);
return SetLocalTime(ref st);
}
public static uint SetDateTimeSystem(
int iYear,
int iMonth,
int iDay,
int iHour,
int iMinute,
int iSecond)
{
SystemTime st =
new SystemTime
(
Convert.ToUInt16(iYear),
Convert.ToUInt16(iMonth),
Convert.ToUInt16(iDay),
Convert.ToUInt16(iHour),
Convert.ToUInt16(iMinute),
Convert.ToUInt16(iSecond)
);
return SetSystemTime(ref st);
}
public static bool SetDateTime(DateTime dt)
{
return SetDateTime
(
dt.Year,
dt.Month,
dt.Day,
dt.Hour,
dt.Minute,
dt.Second
);
}
public static bool SetDate(int iYear, int iMonth, int iDay)
{
DateTime dt = DateTime.Now;
return SetDateTime(
iYear,
iMonth,
iDay,
dt.Hour,
dt.Minute,
dt.Second);
}
public static bool SetDate(DateTime date)
{ DateTime time = DateTime.Now;
return SetDateTime(
date.Year,
date.Month,
date.Day,
time.Hour,
time.Minute,
time.Second);
}
public static bool SetTime(int iHour, int iMinute, int iSecond)
{
DateTime dt = DateTime.Now;
return SetDateTime(
dt.Year,
dt.Month,
dt.Day,
iHour,
iMinute,
iSecond);
}
public static bool SetTime(DateTime time)
{
DateTime date = DateTime.Now;
return SetDateTime(
date.Year,
date.Month,
date.Day,
time.Hour,
time.Minute,
time.Second);
}
}
}
答案 1 :(得分:0)
这是我到目前为止得出的结论...... Motorola MC9500的传感器无法以编程方式访问。