zoukankan      html  css  js  c++  java
  • Wince开发经验分享

    1.阻止进入节电状态,我们的程序运行的时候,如果不希望屏幕黑掉或者变暗。可以用这个方法。
        添加引用:using System.Runtime.InteropServices;
        添加一个定时器,并使用下面代码来发送虚拟键:public const int VK_NONAME = 0xFC;
            public const int KEYEVENTF_SILENT = 0x0004;
            public const int INPUT_KEYBOARD = 1;

            [DllImport("coredll.dll", EntryPoint = "SendInput")]
            public static extern uint SendInput(
                uint nInputs,
                ref INPUT pInputs,
                int cbSize
            );

            public struct KEYBDINPUT
            ...{
                public ushort wVk;
                public ushort wScan;
                public ulong dwFlags;
                public ulong time;
                public ulong dwExtraInfo;
            }

            public struct INPUT
            ...{
                public ulong type;
                public KEYBDINPUT ki;
            }

            #endregion
            private void timer1_Tick(object sender, EventArgs e)
            ...{
                INPUT ip = new INPUT();
                KEYBDINPUT ki = new KEYBDINPUT();
                ki.wVk = VK_NONAME;
                ki.dwFlags = KEYEVENTF_SILENT;
                ip.type = INPUT_KEYBOARD;
                ip.ki = ki;
                SendInput(1, ref ip, 28);
            }

    2。串口通讯(2005)
         使用vs2005开发智能设备上的程序,大多需要用到串口。我们可以用System.IO.Port.SerialPort这个组件。但有一点要注意的,就是读取数据的时候。比如你要缓存串口的数据,一定不要用属性BytesToRead。而要先缓存这个属性,再操作串口。因为你的连续的两步操作可能这个属性返回的结果是不同的。正确的读取、缓存串口数据的代码是这样的:
    private void serial_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            ...{
                try
                ...{
                    //this.Invoke(new myDelegate(UpdateRxText), serial.ReadExisting());            
                    int ReadBytes = serial.BytesToRead;

                    if (ReadBytes <= 0)
                    ...{
                        return;
                    }
                    byte[] bzBuff = new byte[ReadBytes];
                    serial.Read(bzBuff, 0, ReadBytes);
                    this.Invoke(new myDelegate(UpdateRxText), bzBuff);
                    //this.BeginInvoke(new myDelegate(UpdateRxText), bzBuff);
                }
                catch (System.IO.IOException ex)
                ...{
                    MessageBox.Show(ex.Message);
                }
            }
    3.我们的程序,如果不使用到wince特有的组建,比如InputPanel,那么你的程序是可以同时运行在wince/ppc/mobile和pc上的。但一旦添加了这些pc不支持的组件,如何让程序还可以运行呢?可以在需要的地方,加上这个检测代码:
    if (System.Environment.OSVersion.Platform == PlatformID.WinCE)
    ...{
                //...
    }
    4.退出程序的时候,最好执行一次关闭串口的操作如果你用到了串口。并显示的调用一次关闭程序。
    serial.Close();
    Application.Exit();
  • 相关阅读:
    P24—动态数组没有{}
    JavaB站学习————接口在开发中的作用
    JavaB站学习————extends和implements同时出现
    JavaB站学习————一个类可以实现多个接口以及接口的总结
    JavaB站学习————接口和多态联合使用。
    01日语五十音
    07 递归&&命名风格&&作业(结构体,malloc,函数,递归)
    JavaB站学习——作业16
    电子书
    破解压缩包
  • 原文地址:https://www.cnblogs.com/googlegis/p/2979242.html
Copyright © 2011-2022 走看看