当前位置:首页 > 医疗电子 > 医疗电子
[导读]介绍本文重点介绍利用微软® .NET微架构来设计家用医疗器械,并介绍如何按照客户需求设计终端产品的观感。这可以通过设计吸引人的图形接口,集成各种通信接口(串口、I2C、SPI、以太网、USB、WiFi等)以及利用i.M

介绍

本文重点介绍利用微软® .NET微架构来设计家用医疗器械,并介绍如何按照客户需求设计终端产品的观感。这可以通过设计吸引人的图形接口,集成各种通信接口(串口、I2C、SPI、以太网、USB、WiFi等)以及利用i.MX微处理器的优异性能来实现。其结果可能是一个高端的监测解决方案,例如血糖计,或其他一些满足特定客户需求的健康及安全设备。这些应用在价格、功能、易用性、外观及感受上有着显著区别。

在慢性疾病例如糖尿病影响年轻人的同时,医生也在让患者协作进行数据采集(疾病监测)以更好控制疾病方面面临更大挑战。例如,青少年糖尿病患者往往会关闭用以监测血糖的葡萄糖监测系统的警报器,这可能导致长时间的血糖控制被中断(见表1)。然而,集成多媒体功能的监测系统可能会让患者易于接受且更好地使用该仪器,包括对警报的回应。

表1:来自美国糖尿病学会(ADA)美国临床内分泌医师协会
     (ACCE)及国际糖尿病联盟(IDF)的血糖控制目标

个人医疗设备除用于慢性病外也可以用于通常的健康和健身应用。集成先进软件和硬件的高智能设计是成功创造未来健康及安全应用的关键。这些应用将供数百万计的人使用。本文介绍一种通过.NET微架构以及i.MX微处理器系列来开发小型低成本解决方案的方法。

表2:葡萄糖监测系统(CGMS)监测的血糖过高,过低及正常的几种状态
     (CGMS对17位I型糖尿病的孩子和青少年的监测)

i.MX应用处理器和.NET微架构

飞思卡尔的i.MX系列应用处理器是基于ARM®内核技术并针对多媒体应用进行了优化设计。.NET微架构可以移植到这些处理器中,以应用这些软件所带的各种功能。

.NET微架构是微软提供的.NET架构中最紧凑的系统架构,且可以配置到最小的内存空间(64KB内存,256KB闪存)。这个架构为嵌入式设备优化设计,充分提供了最常用的嵌入式开发任务,同时裁减了一些.NET完整架构中不必要的任务。它使得开发人员可以使用通信接口(以太网、WiFi、USB、串口、SPI、I2C)、LCD(直接在显示器上显示或通过视频元件)、触摸屏和存储器(闪存、内存、SD/MMC记忆卡)。由于其结构限制,.NET微架构限于运行一个应用,但它可以支持多任务运行。.NET架构的库具有最常用的对象和功能,使用它们需要从微软获得授权许可证。

飞思卡尔提供的i.MXS应用 处理器可以用于.NET微架构的应用。处理器的特点有:

• ARM920T®内核,主频100MHz

• 彩色LCD控制器

• 直接内存访问控制器DMAC

• 外设接口EIM

• SDRAM控制器

• 多种外设接口(SPI,USB和UART)

• 低功耗模式让系统在降低成本和功耗预算的同时还可以获得额外性能

移植.NET微架构可以让用户使用微软的Visual C#来开发嵌入式应用,使高端编程人员在开发嵌入式应用时获得优势。

采用.NET微架构来开发i.MXS嵌入式健康与安全应用的工具包包括:

• 微软Visual Studio 2008

• 微软Visual C#

• .NET微架构

• USB数据线

• i.MXS开发板

要获得关于.NET微架构更多的信息,请访问www.microsoft.com/netmf.

设计技巧及考虑因素

下面是在设计图形用户界面(GUIs)和数据监测功能时的一些技巧和考虑因素。具有C#编程经验的开发者能够为特殊的健康和安全嵌入式应用需求来配置硬件。

通用输入输出(GPIO)

几乎所有的健康和安全设备都使用GPIO来配置LED灯(用来显示一些特定的设备状态)、特殊的按键(复位、测试模式及校准)以及信号(用以检测准确的传感器读操作的额外中断)。根据不同的应用需求,.NET微架构可以通过3种方法来配置GPIO:

1.作为输入引脚

InputPort inputPin = new InputPort(Pins.GPIO_PORT_C_5, true, Port.ResistorMode.PullUp);

if (inputPin.Read()) runInputAction();

2.作为中断引脚

InterruptPort interruptPin = new

InterruptPort(Pins.GPIO_PORT_C_6, true, Port.

ResistorMode.PullUp, Port.InterruptMode.

InterruptEdgeHigh);

interruptPin.OnInterrupt += new GPIOInterruptEvent

Handler(inputPinInterrupt_onInterrupt);

3.作为输出引脚

OutputPort outputPin = new OutputPort(Pins.GPIO_

PORT_C_7, true);

outputPin.Write(true);

配置线程如下:

Thread t1 = new Thread(new ThreadStart(thread1));

t1.Priority = ThreadPriority.Highest;

t1.Start();

在存储器中保存数据

嵌入式开发中另外一个常用的任务是将数据保存在闪存中。数据会被保存在诸如血压计、血糖计等多种不同种类的医疗设备中。利用.NET微架构把数据存储到闪存中,需要以下几步:

1.建立序列类(serializable class)

[Serializable]

public class Device

{

private String name;

private byte value;

public String Name

{

set { name = value; }

get { return name; }

}

public byte Value

{

set { value = value; }

get { return value; }

}

public Device(byte Value, String Name)

{

value = Value; name = Name;

}

}

2.建立序列类日志

[Serializable]

class DeviceLog

{

private ArrayList log = new ArrayList();

public ArrayList Log

{

get { return log; }

}

public void AddToLog(Device device)

{

log.Insert(0, device);

}

public void RemoveFromLog(Device device)

{

log.Remove(device);

}

public void ClearLog()

{

log.Clear();

}

}

3.建立并使用闪存参考

ExtendedWeakReference flashReference;

uint id = 0;

public Object load()

{

flashReference = ExtendedWeakReference.

RecoverOrCreate(

typeof(Program), //

marker class

id,

// id number in the marker class

ExtendedWeakReference.c_

SurvivePowerdown);// flags

flashReference.Priority = (Int32)

ExtendedWeakReference.PriorityLevel.Important;

Object data = flashReference.Target; //

recovering data

return data;

}

public void save(Object data)

{

flashReference.Target = data;

}

图形用户接口GUI

.NET微架构还可以帮助程序员开发更具吸引力的界面,从而可以为终端客户提供与众不同的选择,也影响开发者选择芯片供应商的决策。

运行在i.MXS处理器的.NET微架构提供两种开发用户界面的方法。一种是使用.NET提供的用户界面元素,另外一种是使用位图类来直接刷新屏幕。

表3:NET 微架构提供的用户接口元素


表中所列所有的元素都可以通过类似的方法编程,程序如下:

// Create a panel

StackPanel _panel = new StackPanel();

_panel.Height = _mainWindow.ActualHeight;

_panel.Width= _mainWindow.ActualWidth;

// Create and configure user interface elements

Text textTitle = new Text();

textTitle.Font = Resources.GetFont(Resources.

FontResources.small);

textTitle.TextContent = “Title Text”;

textTitle.HorizontalAlignment = Microsoft.SPOT.

Presentation.HorizontalAlignment.Center;

textTitle.ForeColor = (Microsoft.SPOT.Presentation.

Media.Color)0xFF0000;

// Add the user interface elements to the panel

_panel.Children.Add(textTitle);

上面的代码首先创建一个面板对象,定义它的尺寸,然后建立好文字对象并定义好字体、大小及颜色属性。再将文字对象加入到面板子类堆中。

一旦用户接口元素被加入到显示面板中,更新元素内容的唯一方法就是异步更新,代码如下:

delegate void UpdateTitleTextDelegate(String hint);

private void UpdateTitleText(String text)

{

if (textTitle != null) textTitle.TextContent =

text;

}

// When the update of the textTitle is required,

use the following code

_mainWindow.Dispatcher.Invoke(

new TimeSpan(0, 0, 1),

new UpdateTitleTextDelegate(UpdateTitleText),

new object[] { “New Title Text” });

当使用位图来更新屏幕时,项目的坐标和画面刷新则不是自动的。开发者需要通过代码函数,状态变量,计时器和线程来进行目标定位和画面刷新。下面是一个简单的例子:

Bitmap _back = new Bitmap(240, 320); // bitmap

used for flush

Bitmap _screen = new Bitmap(240, 320); // based

bitmap to be updated

Font font = Resources.GetFont(Resources.

FontResources.small);

_back.DrawImage(35, 10, Resources.

GetBitmap(Resources.BitmapResources.freescale), 0,

0, 170, 57);

_back.DrawRectangle(Color.White, 1, 35, 10, 170,

57, 2, 2, Color.White, 0, 0, Color.White, 240,

320, 0);

_screen.DrawImage(0, 0, _back, 0, 0, 240, 320);

_screen.DrawTextInRect(“State: Background”, 10,

300, 220, 20, Bitmap.DT_AlignmentCenter |

Bitmap.DT_TrimmingCharacterEllipsis,

(Color)0xFFFFFF, font);

_screen.Flush();

图表提供了检验历史数据以及进行分析的方法。个人健康和安全设备通常使用图形,例如柱状图和点图来显示,采用统一格式来比较多个变量。下面介绍两种图形处理的方法。

第一是使用用户接口元素中的图像元素,开发者可以通过位图的属性从象素级别来控制显示的信息。

图1

表4:可以通过下面的位图类方法来操作图像中的象素


第二种方法,采用用户接口元素中的帆布元素,开发者可以操作坐标和在指定的区域显示用户接口元素,如下例所示:

Canvas _canvas = new Canvas();

_canvas.Height = SystemMetrics.ScreenHeight;

_canvas.Width = SystemMetrics.ScreenWidth;

Shape shape = new Rectangle();

// Getting random numbers for width and height,

fixing the max number to the canvas size

shape.Width = Math.Random(_canvas.Width);

shape.Height = Math.Random(_canvas.Height);

shape.Stroke = new Pen(color);

shape.Fill = new SolidColorBrush(color);

// Setting the location in the canvas for the

element, these functions are static

Canvas.SetTop(shape, Math.Random(_canvas.Height -

shape.Height));

Canvas.SetLeft(shape, Math.Random(_canvas.Width -

shape.Width));

// Adding the shape to the canvas

_canvas.Children.Add(shape);

在上面的代码中,我们建立了一个帆布对象并定义了宽和高,然后建立一个矩形对象并定义其类型,填充色以及材质。最后,定义好矩形对象在帆布中的坐标,将其添加到帆布中。创建图形比以往任何时候都更加容易,而这都是基于支持.NET微架构用户接口元素的i.MXS微处理器。

通信接口

串口通信是所有健康和安全应用中最主要的通信手段。它用来将设备中的数据传输给个人电脑供医生和患者分析。

使用例如UART、SPI、I2C、USB、Ethernet和Wi-Fi的接口常用的发送数据给PC的手段。在下面的例子中,代码采用UART来进行通信:

SerialPort serialPort;

// The configuration is through the SerialPort.

Configuration class

SerialPort.Configuration serialConfig=new

SerialPort.Configuration(SerialPort.Serial.COM1,

SerialPort.BaudRate.Baud115200, false);

serialPort = new SerialPort(serialConfig);

// The read is through the Read function that

returns the number of bytes read numberOfBytesRead

= serialPort.Read(strBuffer, 0, READ_NUMOFCHARS,

READ_TIMEOUT);

// The write is through the Write function

serialPort.Write(strBuffer, 0, strBuffer.Length);

遗憾的是,串口不使用中断方式来提醒应用层收到数据或串口准备好发送数据。常用的检查收到字节数的方法是监测Read的返回值。尽管如此,.NET 微架构使得开发者可以采用线程和事件的方式建立一个更加完整的类,其中可以采用带有无限循环的线程来检查收到的字节数。

图2是一个基于i.MXS应用处理器的卫生保健系统框图范例。

图2 基于i.MXS应用处理器的卫生保健系统框图

结论

i.MXS处理器和.NET微架构是专门针对时钟、手表、遥控器、血糖计、胆固醇计等应用进行优化设计的。采用i.MXS处理器和.NET微架构,开发者不需要成为微处理器的专家就可以迅速的设计有视觉吸引力的用户界面。高级的C#编程使得程序员可以采用类似个人电脑编程的方式来开发高端程序。

总之,微软和飞思卡尔使得设计者可以开发出引人入胜的应用(外观和感观良好并为终端用户提供增值)迅速推向市场。更重要的是,持续不断的监测疾病可以减少病痛和被病毒感染,从而帮助提高医疗救护的反应速度.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭