问题描述
我最近在用.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这个是哪里加进来的呢!