色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 醫(yī)療電子 > 設(shè)計應(yīng)用 > 改變高復(fù)雜度、簡化健康和安全的解決方案設(shè)計

          改變高復(fù)雜度、簡化健康和安全的解決方案設(shè)計

          作者: 時間:2012-03-16 來源:網(wǎng)絡(luò) 收藏

          介紹

          本文引用地址:http://cafeforensic.com/article/199552.htm

          本文重點介紹利用微軟® .NET微架構(gòu)來設(shè)計家用醫(yī)療器械,并介紹如何按照客戶需求設(shè)計終端產(chǎn)品的觀感。這可以通過設(shè)計吸引人的圖形接口,集成各種通信接口(串口、I2C、SPI、以太網(wǎng)、USB、WiFi等)以及利用i.MX微處理器的優(yōu)異性能來實現(xiàn)。其結(jié)果可能是一個高端的監(jiān)測解決方案,例如血糖計,或其他一些滿足特定客戶需求的健康及安全設(shè)備。這些應(yīng)用在價格、功能、易用性、外觀及感受上有著顯著區(qū)別。

          在慢性疾病例如糖尿病影響年輕人的同時,醫(yī)生也在讓患者協(xié)作進行數(shù)據(jù)采集(疾病監(jiān)測)以更好控制疾病方面面臨更大挑戰(zhàn)。例如,青少年糖尿病患者往往會關(guān)閉用以監(jiān)測血糖的葡萄糖監(jiān)測系統(tǒng)的警報器,這可能導(dǎo)致長時間的血糖控制被中斷(見表1)。然而,集成多媒體功能的監(jiān)測系統(tǒng)可能會讓患者易于接受且更好地使用該儀器,包括對警報的回應(yīng)。

          表1:來自美國糖尿病學(xué)會(ADA)美國臨床內(nèi)分泌醫(yī)師協(xié)會
          (ACCE)及國際糖尿病聯(lián)盟(IDF)的血糖控制目標

          個人醫(yī)療設(shè)備除用于慢性病外也可以用于通常的健康和健身應(yīng)用。集成先進軟件和硬件的高智能設(shè)計是成功創(chuàng)造未來健康及安全應(yīng)用的關(guān)鍵。這些應(yīng)用將供數(shù)百萬計的人使用。本文介紹一種通過.NET微架構(gòu)以及i.MX微處理器系列來開發(fā)小型低成本解決方案的方法。

          表2:葡萄糖監(jiān)測系統(tǒng)(CGMS)監(jiān)測的血糖過高,過低及正常的幾種狀態(tài)
          (CGMS對17位I型糖尿病的孩子和青少年的監(jiān)測)

          i.MX應(yīng)用處理器和.NET微架構(gòu)

          飛思卡爾的i.MX系列應(yīng)用處理器是基于ARM®內(nèi)核技術(shù)并針對多媒體應(yīng)用進行了優(yōu)化設(shè)計。.NET微架構(gòu)可以移植到這些處理器中,以應(yīng)用這些軟件所帶的各種功能。

          .NET微架構(gòu)是微軟提供的.NET架構(gòu)中最緊湊的系統(tǒng)架構(gòu),且可以配置到最小的內(nèi)存空間(64KB內(nèi)存,256KB閃存)。這個架構(gòu)為嵌入式設(shè)備優(yōu)化設(shè)計,充分提供了最常用的嵌入式開發(fā)任務(wù),同時裁減了一些.NET完整架構(gòu)中不必要的任務(wù)。它使得開發(fā)人員可以使用通信接口(以太網(wǎng)、WiFi、USB、串口、SPI、I2C)、LCD(直接在顯示器上顯示或通過視頻元件)、觸摸屏和存儲器(閃存、內(nèi)存、SD/MMC記憶卡)。由于其結(jié)構(gòu)限制,.NET微架構(gòu)限于運行一個應(yīng)用,但它可以支持多任務(wù)運行。.NET架構(gòu)的庫具有最常用的對象和功能,使用它們需要從微軟獲得授權(quán)許可證。

          飛思卡爾提供的i.MXS應(yīng)用 處理器可以用于.NET微架構(gòu)的應(yīng)用。處理器的特點有:

          • ARM920T®內(nèi)核,主頻100MHz

          • 彩色LCD控制器

          • 直接內(nèi)存訪問控制器DMAC

          • 外設(shè)接口EIM

          • SDRAM控制器

          • 多種外設(shè)接口(SPI,USB和UART)

          • 低功耗模式讓系統(tǒng)在降低成本和功耗預(yù)算的同時還可以獲得額外性能

          移植.NET微架構(gòu)可以讓用戶使用微軟的Visual C#來開發(fā)嵌入式應(yīng)用,使高端編程人員在開發(fā)嵌入式應(yīng)用時獲得優(yōu)勢。

          采用.NET微架構(gòu)來開發(fā)i.MXS嵌入式健康與安全應(yīng)用的工具包包括:

          • 微軟Visual Studio 2008

          • 微軟Visual C#

          • .NET微架構(gòu)

          • USB數(shù)據(jù)線

          • i.MXS開發(fā)板

          要獲得關(guān)于.NET微架構(gòu)更多的信息,請訪問www.microsoft.com/netmf.

          設(shè)計技巧及考慮因素

          下面是在設(shè)計圖形用戶界面(GUIs)和數(shù)據(jù)監(jiān)測功能時的一些技巧和考慮因素。具有C#編程經(jīng)驗的開發(fā)者能夠為特殊的健康和安全嵌入式應(yīng)用需求來配置硬件。

          通用輸入輸出(GPIO)

          幾乎所有的健康和安全設(shè)備都使用GPIO來配置LED燈(用來顯示一些特定的設(shè)備狀態(tài))、特殊的按鍵(復(fù)位、測試模式及校準)以及信號(用以檢測準確的傳感器讀操作的額外中斷)。根據(jù)不同的應(yīng)用需求,.NET微架構(gòu)可以通過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();

          在存儲器中保存數(shù)據(jù)

          嵌入式開發(fā)中另外一個常用的任務(wù)是將數(shù)據(jù)保存在閃存中。數(shù)據(jù)會被保存在諸如血壓計、血糖計等多種不同種類的醫(yī)療設(shè)備中。利用.NET微架構(gòu)把數(shù)據(jù)存儲到閃存中,需要以下幾步:

          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微架構(gòu)還可以幫助程序員開發(fā)更具吸引力的界面,從而可以為終端客戶提供與眾不同的選擇,也影響開發(fā)者選擇芯片供應(yīng)商的決策。

          運行在i.MXS處理器的.NET微架構(gòu)提供兩種開發(fā)用戶界面的方法。一種是使用.NET提供的用戶界面元素,另外一種是使用位圖類來直接刷新屏幕。

          表3:NET 微架構(gòu)提供的用戶接口元素

          表中所列所有的元素都可以通過類似的方法編程,程序如下:

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

          上面的代碼首先創(chuàng)建一個面板對象,定義它的尺寸,然后建立好文字對象并定義好字體、大小及顏色屬性。再將文字對象加入到面板子類堆中。

          一旦用戶接口元素被加入到顯示面板中,更新元素內(nèi)容的唯一方法就是異步更新,代碼如下:

          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” });

          當使用位圖來更新屏幕時,項目的坐標和畫面刷新則不是自動的。開發(fā)者需要通過代碼函數(shù),狀態(tài)變量,計時器和線程來進行目標定位和畫面刷新。下面是一個簡單的例子:

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

          圖表提供了檢驗歷史數(shù)據(jù)以及進行分析的方法。個人健康和安全設(shè)備通常使用圖形,例如柱狀圖和點圖來顯示,采用統(tǒng)一格式來比較多個變量。下面介紹兩種圖形處理的方法。

          第一是使用用戶接口元素中的圖像元素,開發(fā)者可以通過位圖的屬性從象素級別來控制顯示的信息。

          圖1

          表4:可以通過下面的位圖類方法來操作圖像中的象素

          第二種方法,采用用戶接口元素中的帆布元素,開發(fā)者可以操作坐標和在指定的區(qū)域顯示用戶接口元素,如下例所示:

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

          在上面的代碼中,我們建立了一個帆布對象并定義了寬和高,然后建立一個矩形對象并定義其類型,填充色以及材質(zhì)。最后,定義好矩形對象在帆布中的坐標,將其添加到帆布中。創(chuàng)建圖形比以往任何時候都更加容易,而這都是基于支持.NET微架構(gòu)用戶接口元素的i.MXS微處理器。

          通信接口

          串口通信是所有健康和安全應(yīng)用中最主要的通信手段。它用來將設(shè)備中的數(shù)據(jù)傳輸給個人電腦供醫(yī)生和患者分析。

          使用例如UART、SPI、I2C、USB、Ethernet和Wi-Fi的接口常用的發(fā)送數(shù)據(jù)給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);

          遺憾的是,串口不使用中斷方式來提醒應(yīng)用層收到數(shù)據(jù)或串口準備好發(fā)送數(shù)據(jù)。常用的檢查收到字節(jié)數(shù)的方法是監(jiān)測Read的返回值。盡管如此,.NET 微架構(gòu)使得開發(fā)者可以采用線程和事件的方式建立一個更加完整的類,其中可以采用帶有無限循環(huán)的線程來檢查收到的字節(jié)數(shù)。

          圖2是一個基于i.MXS應(yīng)用處理器的衛(wèi)生保健系統(tǒng)框圖范例。

          圖2 基于i.MXS應(yīng)用處理器的衛(wèi)生保健系統(tǒng)框圖

          結(jié)論

          i.MXS處理器和.NET微架構(gòu)是專門針對時鐘、手表、遙控器、血糖計、膽固醇計等應(yīng)用進行優(yōu)化設(shè)計的。采用i.MXS處理器和.NET微架構(gòu),開發(fā)者不需要成為微處理器的專家就可以迅速的設(shè)計有視覺吸引力的用戶界面。高級的C#編程使得程序員可以采用類似個人電腦編程的方式來開發(fā)高端程序。

          總之,微軟和飛思卡爾使得設(shè)計者可以開發(fā)出引人入勝的應(yīng)用(外觀和感觀良好并為終端用戶提供增值)迅速推向市場。更重要的是,持續(xù)不斷的監(jiān)測疾病可以減少病痛和被病毒感染,從而幫助提高醫(yī)療救護的反應(yīng)速度.



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉