huyphuc92
Trứng gà
Theo loạt clip học C# của PIF, mình có làm theo để đọc chuỗi string ở cổng UART của kit TM4C129. Khi mình dùng hercules để kiểm tra thì chuỗi string gửi đi đúng, nhưng khi mình test bằng đoạn code C# thì chuỗi nhận về bị sai, nó hiển thị ra cái gì ấy.
Code C#
Còn code cho kit TM4C129 thì giống code UART của PIF luôn.
Code C#
Code:
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.IO.Ports;
namespace Auto_detect_Com
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
LBStatus.Text = "Disconnect";
BTConnect.Text = "Connect";
}
int intlen = 0;
private void timer1_Tick(object sender, EventArgs e)
{
string[] ports = SerialPort.GetPortNames();
if (intlen != ports.Length)
{
intlen = ports.Length;
CBSelecCOM.Items.Clear();
for (int j = 0; j < intlen; j++)
{
CBSelecCOM.Items.Add(ports[j]);
}
}
}
private void BTConnect_Click(object sender, EventArgs e)
{
if (LBStatus.Text == "Disconnect")
{
Com.PortName = CBSelecCOM.Text;
Com.Open();
LBStatus.Text = "Connect";
BTConnect.Text = "Disconnect";
}
else
{
Com.Close();
LBStatus.Text = "Disconnect";
BTConnect.Text = "Connect";
}
}
private void BTSend_Click(object sender, EventArgs e)
{
string s;
if (LBStatus.Text == "Connect")
{
s = TxtSend.Text;
Com.Write(s);
}
}
private void Com_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string s;
s = Com.ReadExisting();
Display(s);
}
private delegate void DlDisplay(string s);
private void Display (string s)
{
if (TxtReceive.InvokeRequired)
{
DlDisplay sd = new DlDisplay(Display);
TxtReceive.Invoke(sd, new object[] { s });
}
else
{
TxtReceive.Text = s;
}
}
}
}