工业自动化--叶帆工作室


微软(中国).Net MF开发团队成员。本博客原创文章,需经作者同意后方可转载,转载时请注明[叶帆工作室]及文章链接。yefanqiu@hotmail.com

叶帆科技|卓越.品质.专业 - www.sky-walker.com.cn



[C#]免费发放firmwave,打造史上最低价.Net MF开发板
叶帆 发表于 2010/6/3 23:01:18
标签(TAG):.Net  Micro  Framework  

很久以前就曾多方位思考限制.Net Micro Framework发展的原因是什么?在物联网和Cortex-M3大行其道的今天,.Net Micro Framework应该有更大的发展空间才对,为什么现在还是关注者甚少?我想主要原因有三,一、源码代码是否开源;二、是否有低价开发板;三、TinyCLR是否够小。

第一个原因,目前已经不是问题,.Net Micro Framework已经实现更为彻底的源代码授权方式(Apache 2.0 license);


……
==============================
点击此处阅读全文
阅读全文(187) | 回复(0)



[C#]开源System.Windows.Forms库,让.Net Micro Framework界面开发和
叶帆 发表于 2009/12/15 23:14:46
标签(TAG):.net  micro  framework  

  .Net Micro Framework本身支持WPF界面开发,但是对国内用户来说,WPF相对比较陌生,并且.Net Micro Framework对此功能的支持并不完善,ButtonTextBoxListBoxPictureBox等等基本控件并不支持,所以要想在.Net Micro Framework上开发出一套相对复杂的窗体界面还是比较困难的。

System.Windows.Form库就是在这种背景下开发出来的,它提供的接口和控件,和.Net Framework.Net Compact Framework保持兼容,也可以说是.Net Compact Framework的一个窗体子集(不仅仅是子集,有写功能略有扩展,如Graphics类支持图片透明、渐变、圆角矩形绘制等等方法)。

由于.Net Micro FrameworkIDE开发环境并不支持所见即所得的窗体设计功能(以后有时间可以为MF开发这一功能),所以我们可以取巧,用.Net Framework.Net Compact Framework开发环境设计窗体,然后把相关窗体文件(如Form1.csForm1.designer.cs文件)直接导入到.Net Micro Framework工程中,稍加删减即可为.Net Micro Framework所用。

System.Windows.Form目前包括ButtonTextBoxListBoxComboBoxCheckBoxGroupBoxRadioButtonPictureBoxProgressBarVScrollBarHScrollBar11种常用控件,此外还提供了MessageBox方法。

包含两类窗体、普通窗体及模式窗体,含义和windows平台相同。

此外System.Windows.Form提供两种界面风格,上面的计算器显示的是SideShow风格的窗体,缺省风格和.Net Compact Framework一致(如下图):

值得一提的是,System.Windows.Form完美支持中文,提供了Arial两种类型的字体(规则、粗体),含有3000多个常用汉字及字符。其使用方法和.Net Framework一致,如果您一致使用缺省字体,您会忽略还有字体设置这一说法的存在。不过考虑到.Net Micro Framework用到资源有限的设备上,所以还是把字体库进行了剥离,可以根据需要自行增删字体(默认字库的大小为546k)。

下面的图例就是基于System.Windows.Form库开发的应用程序。

 

 

System.Windows.Form库支持多窗体,并且支持软键盘,所以考虑到窗体关闭、切换等操作,故引入了任务栏(和Windows Mobile的任务栏有些类似),相关功能如下图所示。 

为了便于说明System.Windows.Form库的方便性,我们试着比较一下.Net Micro Framework默认窗体开发和用System.Windows.Form库开发的代码区别。

.Net Micro Framework默认窗体程序包含两个文件,一个是按钮配置程序GPIOButtonInputProvider.cs,相关代码如下:

using Microsoft.SPOT;

using Microsoft.SPOT.Input;

using Microsoft.SPOT.Hardware;

using Microsoft.SPOT.Presentation;

namespace MFWindowApplication1

{

    public sealed class GPIOButtonInputProvider

    {

        public readonly Dispatcher Dispatcher;

        private ButtonPad[] buttons;

        private DispatcherOperationCallback callback;

        private InputProviderSite site;

        private PresentationSource source;

 

        /////////////////////省略多个按钮操作相关函数/////////////////////

    }

}

第二个是主体文件Program.cs,代码如下:

using System;

using Microsoft.SPOT;

using Microsoft.SPOT.Input;

using Microsoft.SPOT.Presentation;

using Microsoft.SPOT.Presentation.Controls;

namespace MFWindowApplication1

{

    public class Program : Microsoft.SPOT.Application

    {

        public static void Main()

        {

            Program myApplication = new Program();

            Window mainWindow = myApplication.CreateWindow();

            GPIOButtonInputProvider inputProvider = new GPIOButtonInputProvider(null);

            myApplication.Run(mainWindow);

        }

        private Window mainWindow;

        public Window CreateWindow()

        {

            mainWindow = new Window();

            mainWindow.Height = SystemMetrics.ScreenHeight;

            mainWindow.Width = SystemMetrics.ScreenWidth;

            Text text = new Text();

            text.Font = Resources.GetFont(Resources.FontResources.small);

            text.TextContent = Resources.GetString(Resources.StringResources.String1);

            text.HorizontalAlignment = Microsoft.SPOT.Presentation.HorizontalAlignment.Center;

            text.VerticalAlignment = Microsoft.SPOT.Presentation.VerticalAlignment.Center;

            mainWindow.Child = text;

            mainWindow.AddHandler(Buttons.ButtonUpEvent, new ButtonEventHandler(OnButtonUp), false);

            mainWindow.Visibility = Visibility.Visible;

            Buttons.Focus(mainWindow);

            return mainWindow;

        }

        private void OnButtonUp(object sender, ButtonEventArgs e)

        {

            Debug.Print(e.Button.ToString());

        }

    }

}

 

而用System.Windows.Form库开发的窗体程序则和.Net Framework.Net Compact Framework相同,包括三个文件,第一个文件是窗体设计文件Form1.Designer.cs,代码如下:

namespace Test

{

    partial class Form1

    {

        #region Windows Form Designer generated code

        private void InitializeComponent()

        {

            this.label1 = new System.Windows.Forms.Label();

            this.SuspendLayout();

            //

            // label1

            //

            this.label1.Location = new System.Drawing.Point(105, 69);

            this.label1.Name = "label1";

            this.label1.Size = new System.Drawing.Size(125, 12);

            this.label1.Text = ".Net Micro Framework";

            //

            // Form1

            //

            this.Controls.Add(this.label1);

            this.Name = "Form1";

            this.Text = "Form1";

            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Label label1;

    }

}

第二个是窗体文件Form1.cs,代码如下:

using System;

using System.Drawing;

using System.Windows.Forms;

namespace Test

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            this.KeyDown += new KeyEventHandler(Form1_KeyDown);

        }

        void Form1_KeyDown(object sender, KeyEventArgs e)

        {

            Debug.Print(e.KeyCode.ToString());

        }

    }

}

第三个是启动文件Program.cs,代码如下:

using System;

namespace Test

{

    static class Program

    {

        static void Main()

        {

            Application.Run(new Form1());

        }

    }

}

 

从以上比较可以看出,采用System.Windows.Form库开发的窗体简单,并且和.Net Framework.Net Compact Framework没有任何区别,所以很方便的把相应平台上的代码移植到.Net Micro Framework上来。

System.Windows.Form库除了字体操作和位图取之.Net Micro Framework原图形库,其它所有函数和类库,均自行编写,和.Net Micro Framework自带的WPF库没有任何关系。目前System.Windows.Form库开发的难点主要在控件焦点切换和刷新方面,现在的版本是测试版,后面将继续优化,如有可能核心源码考虑用C++本地代码进行实现,这样性能就会得到大幅度提升。

后续版本的开发计划暂考虑如下:

1、  TextBox控件继续完善,支持光标操作;

2、  支持中文输入法;

3、  开发ListViewTreeView控件;

4、  部分核心代码用C++本地代码实现。

 

【源码下载】http://www.sky-walker.com.cn/yefan/SourceCode/YFWindows.rar

【技术交流】http://space.cnblogs.com/group/MFSoft/

 


==============================
点击回复文章
阅读全文(372) | 回复(0)



[C#]支持横竖屏切换的.Net Micro Framework模拟器
叶帆 发表于 2009/12/6 12:03:44
标签(TAG):.Net  Micro  Framework  

.Net Micro Framework V3.0开始,就一直期待美国团队能推出横竖屏切换功能的模拟器,但直到V4.0的推出也没有实现该功能。由于手头上的一些开发板带有的竖屏的LCD,所以离开开发板,开发相关界面就会难以调试,所以只好自行开发一个支持横竖屏切换的模拟器。

原先我推出的.Net Micro Framework V3.0模拟器界面很难修改为竖屏方式(即使修改,效果也会很难看),所以重新用Photoshop进行了界面设计,这样切换后的横竖屏都会比较易于接受。

在开发横竖屏时有一个技术上的难点,就是模拟器显示的尺寸来源于YFEmulator.exe.emulatorconfig文件,内容如下:

<LcdDisplay id="mydisplay">

   <Width>320</Width>


……
==============================
点击此处阅读全文
阅读全文(285) | 回复(0)



[C#]MSN Direct 日志系统浅析 
叶帆 发表于 2009/11/9 23:02:48
标签(TAG):MSN  Direct  

对一个复杂的需要24小时连续运行的系统来说,日志系统必不可少,它为系统调试、错误定位提供最有力的支持。
……
==============================
点击此处阅读全文

阅读全文(731) | 回复(0)



[其它]工控项目开发框架介绍
叶帆 发表于 2008/4/23 21:02:55
标签(TAG):工控SDK  

结合公司多年各系统平台开发维护的经验,逐步确立了统一各系统平台的思想,在平台建立完善的基础上进行系统的二次开发。

目前焦炉四大机车系统、烧结配水系统、隧道广告系统已实现平台统一(如下图)。


……
==============================
点击此处阅读全文
阅读全文(2406) | 回复(0)



[C#].Net桌面程序的旗舰--参加亚控科技组态王7.0发布有感
叶帆 发表于 2008/4/18 17:05:57
标签(TAG):组态王  

     
昨天参加了亚控科技在翠宫饭店举办的“突破科技、面向未来—2008北京亚控科技巡展” ,说实在的,这并不是组态王7.0的发布会,没有演示,没有Dome光盘,只是通过PPT简单的讲了一下组态王7.0的特性,想必组态王7.0的发布日期又一次跳票了。
不知道为什么亚控科技刻意回避组态王7.0在.net平台下开发,我想一个原因是他们采用VS2003开发,.Net Framework版本最高不过1.1,目前都已经3.5了,如果明说用.net开发,有人就会问是不是最新的版本(由于.Net Framework1.0和2.0及3.x差别都很大,估计很难迁移到新的平台,初步推测组态王应该在2004~2005左右开始开发的,毕竟开发了3、4年的东西,一时改不了);另一个原因就是实时性怎么保证。由于.net程序很容易被反编译,所以用混淆器混淆后,势必影响性能,此外.net平台本身性能和VC6.0开发的程序相比性能一定相差不少;第三个原因我想早期组态王开发都是用VC5.0和VC6.0开发的,版本有延续和继承性,性能可以得到保证。
……
==============================
点击此处阅读全文
阅读全文(1996) | 回复(0)



FAT文件系统几点释疑 
叶帆 发表于 2008/3/20 9:11:37
标签(TAG):FAT  

 [叶帆工作室]  http://blog.csdn.net/yefanqiu/archive/2008/03/13/2176340.aspx

春节前微软MF负责人员就提出用C#实现MF阅读全文(1962) | 回复(0)




[C#]实现SideShow窗体界面-.Net Micro Framework研究
叶帆 发表于 2008/2/2 11:56:17
标签(TAG):.Net  Micro  Framework  

[叶帆工作室]http://blog.csdn.net/yefanqiu/archive/2008/01/25/2066128.aspx

     基于MF系统的Windows SideShow界面是非常炫的(如下图)。既然微软能用.Net Micro Framework实现这么棒的界面效果,我想我们也能做到。

(SideShow模拟器界面和游戏程序中的右键菜单—注意菜单弹出后,其它的界面变暗了)
现在的任务是设计一套支持鼠标(或触摸屏)的窗体框架(目前MF提供的Window类仅支持按键功能),所以正好把SideShow如此炫的界面元素也可以添加进来。
用过MF的人知道是用下面的方法来实现按键事件接收的,既然我们要支持鼠标功能,所以最好也用类似的机理实现。
……
==============================
点击此处阅读全文
阅读全文(1812) | 回复(0)



[C#]用MF控制机器人- .Net Micro Framework研究 
叶帆 发表于 2008/1/30 8:59:39
标签(TAG):iRobot  

  [叶帆工作室]http://blog.csdn.net/yefanqiu/archive/2008/01/15/2046051.aspx
机器人研究一直是我很早以前的梦想,没有想到在深入研究.Net Micro Framework同时能和机器人搭上了联系。
美国iRobot作为一家大型的机器人军工机械厂,其家用机器人吸尘器(电不足时能自动充电的机器人)已经让iRobot公司名满天下。我们研究的机器人就是iRobot公司推出了的新作——一个可以自己编程的机器人移动平台iRobot Create。
由于最近才从微软拿到这个机器人,所以我们第一步就是先要了解这个机器人,然后MF才能作为它的大脑控制该机器人。
让我们先一睹iRobot Create的“芳容”。
……
==============================
点击此处阅读全文
阅读全文(2561) | 回复(0)



[其它]北京MVP Gathering简记
叶帆 发表于 2008/1/28 11:39:52
标签(TAG):微软MVP  

[叶帆工作室] http://blog.csdn.net/yefanqiu/archive/2008/01/15/2045977.aspx

新年新气象,08年真是充满期待的一年。26位MVP在上礼拜天齐聚在北京微软现代汽车大厦18Hub 100会议室,开始了新的技术交流,值得庆幸的是我在会上有机会和众多MVP一起分享了MF相关的知识。

 


……
==============================
点击此处阅读全文
阅读全文(1722) | 回复(0)


9 1 2 3 4 5 :




 
  日历 

«上月10年9月»下月
1234
567891011
12131415161718
19202122232425
2627282930

  登录 

用户名称:
登陆密码:
密码保存:

  我的分类  

首页(49)
VB(4)
VC(7)
C#(21)
其它(9)
DOS(0)
PLC(8)

  最新日志 

免费发放firmwave,打造史上最
开源System.Windows.F
支持横竖屏切换的.Net Micro
MSN Direct 日志系统浅析
工控项目开发框架介绍
.Net桌面程序的旗舰--参加亚控科
FAT文件系统几点释疑
实现SideShow窗体界面-.Ne
用MF控制机器人- .Net Mic
北京MVP Gathering简记

  最新评论  
 
回复:Modbus Rtu&n
回复:OPC Client&n
回复:Modbus Rtu&n
回复:Modbus Rtu&n
回复:OPC Client&n
回复:西门子PPI协议的工控通信控件
回复:西门子PPI协议的工控通信控件
回复:Modbus Rtu&n
回复:嵌入式系统之Modbus 
回复:.Net Micro&n

  Blog统计 
 

blog名称:工业自动化--叶帆工作室
日志总数:49
评论数量:20
留言数量:2
访问次数:138303
建立时间:2007年8月18日

  友情链接 


 叶帆工作室

 叶帆软件列表


  给我留言

签写新留言

Net Micro Framework 
求教ce下组态软件
请帮忙

  搜索 


      
 

中华工控网 | 联系我们 | 工控论坛首页 | 工控博客首页 | 博客注册 | 博客登陆

工控博客管理联系邮箱:工控博客服务邮箱

中华工控网 © Copyright 2007. All rights reserved.