真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在.NetMicroFramework可以進(jìn)行鼠標(biāo)操作--魅力

MF的標(biāo)準(zhǔn)模塊僅支持按鍵,并不支持鼠標(biāo)功能。但是對(duì)一些常見(jiàn)應(yīng)用來(lái)說(shuō),如果沒(méi)有鼠標(biāo)(或觸摸屏)用起來(lái)就太不習(xí)慣了。有什么辦法可以讓MF支持鼠標(biāo)功能呢?第一,外部設(shè)備必須把鼠標(biāo)信息傳到MF應(yīng)用程序,應(yīng)用程序根據(jù)這些信息繪制鼠標(biāo)及執(zhí)行相應(yīng)的動(dòng)作。鼠標(biāo)信息最少包含三種,鼠標(biāo)按鍵狀態(tài)(按下或放開(kāi)),鼠標(biāo)坐標(biāo)(x,y)。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到灌陽(yáng)網(wǎng)站設(shè)計(jì)與灌陽(yáng)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋灌陽(yáng)地區(qū)。

    目前,Spi通道可以非常方便地建立設(shè)備和用戶程序之間的聯(lián)系,所以就考慮用Spi來(lái)實(shí)現(xiàn)該功能。

    第一步,還是從我編寫的模擬器入手,添加了一個(gè)Spi驅(qū)動(dòng)類。

    //MouseDevice

    public class MouseComponent : SpiDevice

    {

    public static Int16 State = 0;

    public static Int16 X = 0;

    public static Int16 Y = 0;

    protected override byte[] Write(byte[] data)

    {

    //------------

    //改寫坐標(biāo)值

    try

    {

    //State = (Int16)((data[0] 《 8) + data[1]);

    //X = (Int16)((data[2] 《 8) + data[3]);

    //Y = (Int16)((data[4] 《 8) + data[5]);

    }

    catch { }

    //------------

    //返回當(dāng)前值

    byte[] bytes = new byte[6];

    bytes[0] = (byte)(State 》 8);

    bytes[1] = (byte)(State & 0xff);

    bytes[2] = (byte)(X 》 8);

    bytes[3] = (byte)(X & 0xff);

    bytes[4] = (byte)(Y 》 8);

    bytes[5] = (byte)(Y & 0xff);

    return bytes;

    }

    protected override ushort[] Write(ushort[] data)

    {

    //------------

    //改寫坐標(biāo)值

    try

    {

    //State = (Int16)data[0];

    //X = (Int16)data[1];

    //Y = (Int16)data[2];

    }

    catch { }

    //------------

    //返回當(dāng)前值

    ushort[] Int16s = new ushort[3];

    Int16s[0] = (ushort)State;

    Int16s[1] = (ushort)X;

    Int16s[2] = (ushort)Y;

    return Int16s;

    }

    }

第二步:編寫鼠標(biāo)應(yīng)用程序

    為了通用,我封裝了一個(gè)windowbase基類

    //鼠標(biāo)事件

    public class MouseEventArgs : EventArgs

    {

    public int X;

    public int Y;

    public int Button;

    public MouseEventArgs()

    {

    X = 0;

    Y = 0;

    Button = 0;

    State = MouseState.None;

    }

    public MouseEventArgs(int x, int y)

    {

    X = x;

    Y = y;

    Button = 0;

    State = MouseState.None;

    }

    public MouseEventArgs(int x, int y, int button)

    {

    X = x;

    Y = y;

    Button = button;

    State = MouseState.None;

    }

    }

    //窗體基類

    internal class WindowBase : Window

    {

    protected YFWinApp m_app;

    Thread MouseThread;

    private ushort state=0, x = 0, y = 0;

    SPI _spi=null;

    protected WindowBase(YFWinApp app)

    {

    m_app = app;

    this.Visibility = Visibility.Visible;

    this.Width = SystemMetrics.ScreenWidth;

    this.Height = SystemMetrics.ScreenHeight;

    Buttons.Focus(this);

    //SPI的pin定義

    _spi = new SPI(new SPI.Configuration((Cpu.Pin)127, true, 0, 0, false, false, 4000, SPI.SPI_module.SPI1));

    x =(ushort)( this.Width/2);

    y =(ushort)( this.Height/2);

    MouseThread = new Thread(new ThreadStart(MouseInfo));

    MouseThread.Start();

    }

    protected override void OnButtonDown(ButtonEventArgs e)

    {

    this.Close();

    m_app.GoHome();

    }

    //獲得鼠標(biāo)信息

    private void MouseInfo()

    {

    ushort[] bout = new ushort[3];

    ushort[] bin = new ushort[3];

    ushort mX, mY, mState;

    while (true)

    {

    //----------------------------------

    //通過(guò)spi通道獲取鼠標(biāo)信息 這部分信息解析和模擬器相對(duì)應(yīng)

    _spi.WriteRead(bout, bin);

    mState = bin[0];       //鼠標(biāo)的狀態(tài) 1- 按下 0 - 放開(kāi)

    mX = bin[1];           //鼠標(biāo)X坐標(biāo)

    mY = bin[2];           //鼠標(biāo)Y坐標(biāo)

    //----------------------------------

    if (x != mX|| y != mY)

    {

    x = mX; y = mY;

    OnMouseMove(new MouseEventArgs(mX, mY, mState));

    }

    if (state != mState)

    {

    state = mState;

    if (state == 1)

    {

    OnMouseDown(new MouseEventArgs(mX, mY, mState));

    }

    else if(state==0)

    {

    OnMouseUp(new MouseEventArgs(mX, mY, mState));

    OnMouseClick(new MouseEventArgs(mX, mY, mState));

    }

    }

    }

    }

 

//鼠標(biāo)移動(dòng)

    protected virtual void OnMouseMove(MouseEventArgs e)

    {

    Debug.Print(“MouseMove:” + e.X.ToString() + “,” + e.Y.ToString() + “,” + e.Button.ToString());

    }

    //鼠標(biāo)單擊

    protected virtual void OnMouseClick(MouseEventArgs e)

    {

    Debug.Print(“MouseClick:” + e.X.ToString() + “,” + e.Y.ToString() + “,” + e.Button.ToString());

    }

    //按下

    protected virtual void OnMouseDown(MouseEventArgs e)

    {

    Debug.Print(“MouseDown:” + e.X.ToString() + “,” + e.Y.ToString() + “,” + e.Button.ToString());

    }

    //抬起

    protected virtual void OnMouseUp(MouseEventArgs e)

    {

    Debug.Print(“MouseUp:” + e.X.ToString() + “,” + e.Y.ToString() + “,” + e.Button.ToString());

    }

    //繪制鼠標(biāo)

    public override void OnRender(DrawingContext dc)

    {

    if (state == 1)

    {

    Pen pp=new Pen(ColorUtility.ColorFromRGB(255,255,0));

    dc.DrawLine(pp, x, y - 5, x, y + 5);

    dc.DrawLine(pp, x-5, y, x+5, y);

    }

    int[] points = { x, y, x+10, y+4, x+5,y+5, x+4,y+10};

    Pen p = new Pen(Color.White, 1);

    dc.DrawPolygon(null, p, points);

    }

    //窗體刷新

    protected void Refresh()

    {

    this.Left = this.Left;

    this.UpdateLayout();

    }

    }

 

 


本文標(biāo)題:在.NetMicroFramework可以進(jìn)行鼠標(biāo)操作--魅力
標(biāo)題URL:http://weahome.cn/article/jgeioo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部