2015-06-03 3 views
0

Я пытаюсь отобразить данные, полученные в текстовом поле. Но я понял, что когда данные поступают на терминал Br @ y, он выглядит нормально (например, 14: 02: 33.43> T 11 22.32), но при запуске на программном обеспечении отсутствует метка времени.Отсутствует метка времени

Я пропускаю все, что приводит к этому?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Data.OleDb; 
using System.IO; 

namespace SerialCom 
{ 
public partial class Form1 : Form 
{ 
    string RxString; //Variable 

    public Form1() 
    { 
     InitializeComponent(); 
    } 


    private void btnStart_Click(object sender, EventArgs e) 
    { 
     serialPort1.PortName = "COM4"; 
     serialPort1.BaudRate = 9600; 

     serialPort1.Open(); 
     if (serialPort1.IsOpen) 
     { 
      btnStart.Enabled = false; 
      btnStop.Enabled = true; 
      txtData.ReadOnly = false; 
     } 

    } 

    private void btnStop_Click(object sender, EventArgs e) 
    { 
     if (serialPort1.IsOpen) 
     { 
      serialPort1.Close(); 
      btnStart.Enabled = true; 
      btnStop.Enabled = false; 
      txtData.ReadOnly = true; 
     } 

    } 

    private void txtData_KeyPress(object sender, KeyPressEventArgs e) 
    { 

     if (!serialPort1.IsOpen) return; // If the port is closed, don't try to send a character. 
     char[] buff = new char[8]; // If the port is Open, declare a char[] array with one element. 
     buff[0] = e.KeyChar; // Load element 0 with the key character. 
     serialPort1.Write(buff, 0, 1); // Send the one character buffer. 
     e.Handled = true;// Set the KeyPress event as handled so the character won't 
     // display locally. If you want it to display, omit the next line. 
    } 

    private void DisplayText(object sender, EventArgs e) 
    { 
     txtData.AppendText(RxString); 
    } 

    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     RxString = serialPort1.ReadExisting(); 
     this.Invoke(new EventHandler(DisplayText)); 

     StreamWriter MyStreamWriter = new StreamWriter(@"c:\testing.txt",true); //True tell SW to append to file instead of overwriting 
     MyStreamWriter.Write(RxString); 
     MyStreamWriter.Flush(); 
     MyStreamWriter.Close(); 
    } 

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (serialPort1.IsOpen) 
      serialPort1.Close(); 
    } 

} 

}

+0

Вы уверены, что временная метка является частью данных, которые вы получаете от последовательной линии? –

+0

@ AlexandreVinçon Да, это часть данных, которые я должен получить .. но я не понимаю, почему я не вижу в текстовом поле – Athena

+0

Не могли бы вы предоставить образец того, что действительно находится в последовательной линии (используя Например, инструмент Portmon) и скриншот того, что вы получаете на экране? –

ответ

0

В принципе, я был неправ, говоря, что метка времени первоначально включена в данные я получил .. Мне нужно добавить в штамп времени на моем собственном .. Это должно было действовать как отчет о том, когда я действительно получил следующие данные.

В результате, чего не хватает это

string time = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss.ff") 

Надеется, что это помогает людям, которые борются с проблемой слишком.

Смежные вопросы