以编程方式访问Motorola MC9500运动传感器?

时间:2013-06-14 11:42:52

标签: c# windows-mobile-6.5 motion-detection motorola-emdk

我目前正在使用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#访问运动传感器?

如果还有其他选择,请告诉我们。

2 个答案:

答案 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的传感器无法以编程方式访问。