Time problem on .NET Micro Framework

问题描述

我最近在用.NETMicroFramework來開發監控程式。但是遇到一個問題。我用HandleOutput(String.Format("[{0:HH:mm:ss:fff}]",DateTime.Now));來輸出我抓到資料的時間但是我抓到的資料有些會出現相同的時間,可能是系統抓到資料封包的時間很接近。請問我要怎麼解決呢。還有哪些更好的時間的函數可以用呢。以下是程式碼感謝大家usingSystem;usingSystem.IO;usingSystem.Text;usingSystem.Collections;usingSystem.Reflection;usingSystem.Threading;usingSystem.Diagnostics;using_DBG=Microsoft.SPOT.Debugger;using_WP=Microsoft.SPOT.Debugger.WireProtocol;namespaceMicrosoft.SPOT.Tools{classSerialDump{_DBG.Enginem_eng;FileStreamm_output;boolm_fTimestamp;boolm_fUsb=true;boolm_fNewLine=true;//--//SerialDump(string[]args){_DBG.PortDefinitionpd=null;stringport=null;uintbaudrate=0;for(inti=0;i<args.Length;i++){stringarg=args[i];if(String.Compare(arg,"-dump",true)==0){m_output=newFileStream(args[++i],FileMode.Create,FileAccess.ReadWrite,FileShare.Read);continue;}if(String.Compare(arg,"-timestamp",true)==0){m_fTimestamp=true;continue;}if(String.Compare(arg,"-usb",true)==0){m_fUsb=true;continue;}if(String.Compare(arg,"-serial",true)==0){m_fUsb=false;continue;}if(port==null){port=arg;continue;}if(baudrate==0){baudrate=UInt32.Parse(arg);continue;}}if(m_fUsb){_DBG.PortDefinition[]ports=_DBG.AsyncUsbStream.EnumeratePorts();if(port==null){if(ports.Length==0){System.Console.WriteLine("NoUsbSPOTdeviceispresent");thrownewApplicationException();}elseif(ports.Length==1){pd=ports[0];}else{System.Console.WriteLine("MorethanoneUSBSPOTdeviceispresent");System.Console.WriteLine("Todumpdatafromaspecificdevice,chooseyourdevicefromthelistbelowandexecute:");System.Console.WriteLine("serialdump-usb<device>");System.Console.WriteLine("");////Morethanoneusbdeviceattached;dumplistsousercanchoose//for(inti=0;i<ports.Length;++i){System.Console.WriteLine("Device"+i+":"+ports[i].DisplayName);}thrownewApplicationException();}}else{foreach(_DBG.PortDefinitionpd2inports){if(port.Equals(pd2.DisplayName)){pd=pd2;break;}}}}if(pd==null){if(port==null)port="COM1";if(baudrate==0)baudrate=115200;pd=_DBG.PortDefinition.CreateInstanceForSerial(port,port,baudrate);}m_eng=new_DBG.Engine(pd);}voidRun(){m_eng.Silent=true;m_eng.Start();m_eng.OnNoise+=new_DBG.NoiseEventHandler(OnNoise);m_eng.OnMessage+=new_DBG.MessageEventHandler(OnMessage);Console.WriteLine("
解决方案二:

解决方案三:
#PRESSRETURNTOEXIT
解决方案四:

解决方案五:
#");Console.ReadLine();m_eng.Stop();m_eng=null;}voidOnNoise(byte[]buf,intoffset,intcount){HandleOutput(buf,offset,count);}voidOnMessage(_WP.IncomingMessagemsg,stringtext){byte[]buf=Encoding.ASCII.GetBytes(text);HandleOutput(buf,0,buf.Length);}voidHandleOutput(byte[]buf,intoffset,intcount){while(count-->0){if(m_fTimestamp){if(m_fNewLine){HandleOutput(String.Format("[{0:HH:mm:ss:fff}]",DateTime.Now));}}charc=(char)buf[offset++];HandleOutput(newString(c,1));m_fNewLine=(c=='n');}}voidHandleOutput(stringtext){Console.Write(text);byte[]buf=Encoding.ASCII.GetBytes(text);if(m_output!=null)m_output.Write(buf,0,buf.Length);}//--//staticvoidMain(string[]args){try{SerialDumpo=newSerialDump(args);o.Run();}catch(ApplicationException){}catch(Exceptione){Console.WriteLine("{0}",e.ToString());}}}}

解决方案

解决方案六:
抱歉啊,我想请问一下如果要把上面的code用windowapplication来写可是我的txtread.text要怎样才能读取数据呢?usingSystem;usingSystem.IO;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;using_DBG=Microsoft.SPOT.Debugger;using_WP=Microsoft.SPOT.Debugger.WireProtocol;namespaceUSBTest{publicpartialclassfrmMain:Form{_DBG.Enginem_eng;boolm_fUsb=true;boolm_fNewLine=true;publicfrmMain(){InitializeComponent();btnSend.Enabled=false;btnUpdata_Click(null,null);}privatevoidbtnUpdata_Click(objectsender,EventArgse){cmbUSBList.Items.Clear();//accesstheUSBtxtRead.Enabled=false;btnSend.Enabled=true;_DBG.PortDefinitionpd=null;stringport=null;uintbaudrate=0;if(m_fUsb){_DBG.PortDefinition[]ports=_DBG.AsyncUsbStream.EnumeratePorts();if(port==null){if(ports.Length==0){MessageBox.Show("NoUsbSPOTdeviceispresent");}elseif(ports.Length==1){pd=ports[0];cmbUSBList.Items.Add(pd.DisplayName);}else{for(inti=0;i<ports.Length;++i){cmbUSBList.Items.Add(ports[i].DisplayName);}}}else{foreach(_DBG.PortDefinitionpd2inports){if(port.Equals(pd2.DisplayName)){pd=pd2;break;}}}}if(pd==null){if(port==null)port="COM1";if(baudrate==0)baudrate=115200;pd=_DBG.PortDefinition.CreateInstanceForSerial(port,port,baudrate);}}//endconnectionprivatevoidbtnSend_Click(objectsender,EventArgse){txtRead.Enabled=true;txtRead.Text=System.Text.Encoding.ASCII.GetBytes();}voidRun(){m_eng.Silent=true;m_eng.Start();m_eng.OnMessage+=new_DBG.MessageEventHandler(OnMessage);m_eng.Stop();m_eng=null;}voidOnMessage(_WP.IncomingMessagemsg,stringtext){byte[]buf=Encoding.ASCII.GetBytes(text);HandleOutput(buf,0,buf.Length);}voidHandleOutput(byte[]buf,intoffset,intcount){while(count-->0){charc=(char)buf[offset++];HandleOutput(newString(c,1));m_fNewLine=(c=='n');}}voidHandleOutput(stringtext){//datastoreinstringtextm_data=text;byte[]buf=Encoding.ASCII.GetBytes(text);}privatevoidcmbUSBList_SelectedIndexChanged(objectsender,EventArgse){}privatevoidtxtRead_TextChanged(objectsender,EventArgse){}}}
解决方案七:
修改你的业务逻辑,在这种情况下,不要仅以一个时间来区分不同的资料封包。
解决方案八:
不明白你讲得是什么意思?
解决方案九:
请教Microsoft.SPOT.Debugger这个是哪里加进来的呢!

时间: 2024-07-28 14:43:21

Time problem on .NET Micro Framework的相关文章

【.Net Micro Framework PortingKit – 15】移植总结(兼谈MF未来发展)

从元旦开始,便利用业余时间从事基于Cortex-M3内核上的.Net Micro Framework的移植工作.虽然到现在算起来有一个多月的时间,但是我平日的正常工作时间大部分都花在和同事一起做WiFi驱动的开发上了,除去写这一系列文章的用时,真正在Cortex-M3内核上移植时间最多也就十几天.这并不说明我在嵌入式方面的功底多么深厚,虽说我PC平台上的软件开发时间有十几年的历史,但是做真正嵌入式的开发才是最近一两年的时间(以前虽说开发过PLC程序和WinCE平台上的组态软件,但充其量仅仅算是嵌

【.Net Micro Framework PortingKit – 14】TinyCLR编译与测试

由于TinyCLR的相关代码与硬件无关,我们所做的就是根据实际需要,添加不同的Feature,此外就是合理配置 堆栈和代码存储位置.其主要工作,具体地来说就是搞定\Solutions\STM3210E\TinyCLR目录下的TinyCLR.proj和 scatterfile_tinyclr_mdk.xml文件. TinyCLR.proj文件和NativeSample.proj的内容类似,不过额外要添加一些由托管代码(C#)写好的库,比较重 要的就是mscorlib.pe,它是TinyCLR的核心

【.Net Micro Framework PortingKit – 13】LCD驱动开发

LCD驱动其实对TinyCLR并无必要,特别是在EM-STM3210E开发板上,因为该开发板上的内存太小了,片内64K,片外扩展了128K,加起来也不过172K,而我们知道针对320*240的显示大小,16bit的位图所占的大小就是150K,很显然.Net Micro Framework所提供的图形库如不加修改是很难正常运行的,不过对我们来说在LCD屏幕上显示文字信息也是值得期待的,如果修改一下图形库,在LCD 上画个线.画个圆和显示个位图也绝不成问题. 和我们以前开发的驱动相比,LCD的驱动开

【.Net Micro Framework PortingKit – 12】SysTick驱动开发

SysTick驱动对TinyCLR来说非常重要,.Net Micro Framework系统的多线程和多任务(对托管代码来说是单任务多线程,但是还存在和托管代码同时运行的任务,如我们用MFDeploy程序Ping TinyCLR或擦写Flash 的时候,就是另外的任务在执行)就是靠它来实现的. SysTick驱动有三个功用,一是我们上面所说的多任务和多线程支持:二是获得系统当前Tick,以此实现延时等待,比如我们常见的Events_WaitForEvents函数就靠它来实现延时功能的:三是为Na

【.Net Micro Framework PortingKit – 11】NandFlash驱动开发

对.Net Micro Framework系统来说,正常情况下Flash(包括NandFlash和NORFlash)分为六个区,分别为: 1.BLOCKTYPE_BOOTSTRAP(存放启动代码,一般为TinyBooter) 2.BLOCKTYPE_CONFIG(配置区,存放配置信息) 3.BLOCKTYPE_CODE(本地代码区,指TinyCLR代码) 4.BLOCKTYPE_DEPLOYMENT(托管代码区,存放用户的C#程序) 5.BLOCKTYPE_STORAGE_A(用户数据存储区)

【.Net Micro Framework PortingKit–10】世界首款Cortex-M3内核MFV4诞生

目前在Cortex-M3平台上最常见的嵌入式操作系统就是UCOSII了,除此之外可支持的主流嵌入式操作系统就难以见到了,这是因为Cortex- M3主频较低(常见72M),不支持MMU,片内Flash和片内RAM都比较小等等,这几点限制,就使诸如WINCE系统.嵌入式Linux等需要 MMU支持的系统无法进行移植,而不需要MMU支持的ucLinux目前也难以见到.不过现在好了,.Net Micro Framework V4从今天起,已正式步入Cortex-M3平台可支持的嵌入式系统行列了. 我们

【.Net Micro Framework PortingKit – 09】串口驱动

虽然在PC机中,串口渐行渐远,但是在嵌入式领域,串口仍可以说是如日中天,因为它造价低廉.并且编程也比较方便,在没有显示屏或输入设备的系统上,串口更是不可或缺,和超级终端一道,共同解决了信息显示和输入问题. 经过这几天的努力,在Cortex-M3平台上的.Net Micro Framework的NativeSample移植工作就要一个段落了,目前已实现启动代码.SRAM.时钟(RCC).中断(NVIC).SysTick.GPIO.串口.NandFlash(FMSC)等相关功能,这些代码可以说是使T

Micro Framework USB Driver开发

为Micro Framework开发USB驱动也有一段时间了,随着开发的深入,对USB理解也渐渐清晰起来. 从系统架构上来说为Micro Framework开发USB驱动有三个层面的工作.一是针对USB芯片的驱动移植( 很多ARM CPU都集成了USB功能),实现MF的HAL层要求的USB接口:二是开发PC平台上针对MF设备的USB驱 动:三是编写应用程序(非Micro Framework应用程序),通过USB接口直接和MF设备通信(这个工作是我 加的,其实完成前两步工作,就已经使MFDeplo

.Net Micro Framework 模拟器详解 – 基本原理

摘要:虚拟仪器(VI)技术在很多高成本的工业项目中扮演着越来越重要的角色,在电子产品的开发中,各种模拟器也为广大开发者方提供了便利,提高了生产力.本文介 绍了微软最新的嵌入式开发框架.Net Micro Framework的模拟器.阐述了模拟器的启动过程,链接组件和注册信息等基本工作过程和原理. .Net MF模拟器简介 .Net MF模拟器是一个.Net MF CLR的Windows 版的运行环境.运行时的核心部分(执行引擎,类型系统和GC等)和基础类库都和在实际设备上跑的MF一样.两者不同之