2011-04-28 160 views
1

我試圖建立我的EFTPOS終端連接到serialport和我的電腦之間的串行口通信。 EFTPOS手冊有一個用於測試的C#代碼,並且他們有以下幾行寫入端口並直接從端口讀取。c#和java之間的差異寫()

port.WriteLine("@PL");
Console.WriteLine(port.ReadLine());

但在Java中,如果我用我的應用程序進入暫停。所以我使用java中的eventhandlers來讀取EFTPOS終端的響應。儘管如此,我仍然無法完成工作。現在我對Java的C#和OutputStream.write(bytearray)的WriteLine(「@ PL」)有疑問。這兩種方法是否將這些字符串在端口上寫入同一個whay?因爲只有消息是「@PL」,EFTPOS纔會響應。解決這個問題對我來說將是一個很大的解脫。

+0

如果您發佈了Java代碼(包括設置端口),這將會很有幫助。 – joev 2011-04-29 17:16:51

+0

@joev:http://stackoverflow.com/questions/5830177/problem-writing-to-serialport-in-java我在這裏用代碼問過這個問題 – Deepak 2011-04-29 18:07:56

回答

1

這可能是他們寫在不同的編碼。如果EFTPOS終端需要使用ASCII,並且Java正在編寫UTF-16,則它將不起作用。

+0

用於和終端通信的串行協議是一個純文本基於請求和響應消息的ASCII協議。那麼在寫入Java端口時,我需要做些什麼來設置ASCII格式? – Deepak 2011-04-28 21:35:59

+0

嗯Java的OutputStream寫入字節,所以你用'String.getBytes'來轉換?例如,您可以使用'String.getBytes(「US-ASCII」)'指定編碼。 – porges 2011-04-28 21:57:13

+0

是的,我試過沒有運氣:( – Deepak 2011-04-28 21:59:47