0
我想ASCII caracters發送到的VideoJet Excel的170 1 -170 6打印機,通過RS-232電纜(串行)C#串行連接不工作
當我使用的測試程序,我沒有問題得到響應從打印機,我可以改變打印機的狀態。
這是我的代碼做了
public partial class Form1 : Form
{
private SerialPort port = new SerialPort("COM1");
private delegate void SetTextDeleg(string data);
public Form1()
{
InitializeComponent();
}
private void addtoText(string text)
{
this.richTextBox1.Text = this.richTextBox1.Text + "\n" + text;
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
port.BaudRate = 9600;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.DataBits = 8;
port.Handshake = Handshake.None;
port.ReadTimeout = 2000;
port.WriteTimeout = 500;
port.DtrEnable = true;
port.RtsEnable = true;
port.Open();
port.DataReceived += DataReceivedHandler;
addtoText("Port is ready");
}
catch (Exception ex)
{
//Console.WriteLine("Error opening my port: {0}", ex.Message);
addtoText("Error opening my port: {0}" + ex.Message);
}
}
public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
System.Threading.Thread.Sleep(500);
string indata = sp.ReadExisting();
this.BeginInvoke(new SetTextDeleg(DisplayToUI), new object[] { indata });
}
private void DisplayToUI(string displayData)
{
addtoText(displayData);
}
private void button1_Click(object sender, EventArgs e)
{
port.Write(tbxAscii.Text);
}
private void Form1_Leave(object sender, EventArgs e)
{
port.Close();
}
}
我需要發送ASCII caracters到打印機,就像
[1B][01][09]
要打開打印機的打印模式。
打印機應該響應,我沒有迴應,並且打印機不改變其狀態。
我有一個程序來測試打印機的串行連接,我可以看到所有的設置都正常(波特率,奇偶校驗...端口),實際上在端口COM1上。
所以我認爲我的port.write沒有發送任何信息給打印機......或者我發送的是corrup信息,而我沒有閱讀打印機的響應。
甜的工作,我可以把它關閉和開啓!但我收到[] [] [] []所以也許我試圖,但一個字節串成一個字符串。 – Insecurefarm 2014-08-28 19:24:35
是的,增加了一些閱讀代碼 – esskar 2014-08-28 19:38:44
再次感謝,它的工作完美! – Insecurefarm 2014-08-28 22:37:57