2

我目前正在开发一个Motorola MC9500具有Windows Mobile 6.5. 我已经尝试过 Symbol 的EMDK库来访问设备的内置运动传感器,但没有任何运气。

.NET v2.7 的 EMDK 中有Symbol.Sensor类库,它应该可以访问所有内置传感器,但我不知道如何使用它。

Symbol.Sensor.SensorManager manager = new Symbol.Sensor.SensorManager();

MissingMethodException在这里遇到一个例外,说......“找不到PInvoke DLL SensorsAPI.dll。”

我应该怎么做才能使用 C# 访问运动传感器?

如果有其他选择,请告知。

4

2 回答 2

2

我将发布一个 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);       
    }       

}
 }
于 2013-06-20T07:51:09.290 回答
0

嗯,这是我到目前为止得出的结论......摩托罗拉 MC9500 的传感器无法通过编程方式访问。

于 2013-07-22T12:23:06.353 回答