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

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

在.NetMicroFramework可以進行鼠標(biāo)操作--魅力-創(chuàng)新互聯(lián)

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

目前成都創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、銅梁網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

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

   //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)用程序

   為了通用,我封裝了一個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)

   {

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

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

   _spi.WriteRead(bout, bin);

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

   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)移動

   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();

   }

   }

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


當(dāng)前題目:在.NetMicroFramework可以進行鼠標(biāo)操作--魅力-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/csscih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部