2011-06-28 136 views
0

我有一個電路有8條輸入線和一條電纜連接到計算機的串行端口。端口控制器並聯連接。 (我不知道這意味着什麼!電子工程系的學生說這意味着「你必須異步使用信號,例如每個信號可以對其他人獨立或獨立)」裝配RS232端口通信

現在我應該寫一個彙編代碼它從文件讀取一些輸入,處理它們,並將這些數據行設置爲或打開。我可以做前2名,但對端口沒有任何想法。

你能給我一個開始嗎?例如,我如何初始化一個端口以及如何在PC的串行端口上設置一行數據?

+0

你確定這是一個串行端口,而不是* *平行(又名打印機又名並口)接口? –

+0

其實不行!我不知道電子產品。他們告訴我的唯一的事情是該端口是R​​S232 DB9。 (打印機端口),我應該控制8個信號。 –

+0

好吧 - 聽起來你需要一個UART。您可能想嘗試在http://electronics.stackexchange.com –

回答

5

我真的認爲你感到困惑 - 很多。 RS 232是協議串口端口使用。在它的9引腳版本(DE-9)中,它有8條可用數據線,但其中只有一半是輸出引腳,並且無法真正控制數據引腳,因此無法通過它發送實際數據。除非你有一個裝有微控制器和串行接口的器件,否則我懷疑它是用於RS-232接口。

RS-232實際上是一些打印機在80年代和90年代早期使用的連接,通常是點陣式打印機。不幸的是,打印除ASCII文本以外的任何內容都太慢,因此引入了parallel port,順便說一句,確實有有8條輸出線。 端口自90年代起就被稱爲「打印機端口」。在現代計算機中,甚至可以單獨控制並行端口的引腳,這就是爲什麼它被廣泛用於電子產品中的原因 - 以及它使用5伏TTL接口的事實,這比12V串行更容易處理端口使用。

您也沒有提及您的程序應該用於哪個操作系統,但是如果您打算直接使用匯編訪問端口,則可能僅限於DOS或Windows 9x/Me。

這就是說:

+0

我會嘗試(希望)。謝謝 –

+0

其實DE-9 :) –

+0

@Jens:固定,謝謝! – thkala

0

既然你沒有指定哪一種語言或開發環境,這裏是使用VB.NET樣本:

Private WithEvents m_comport1 As IO.Ports.SerialPort 

Private Sub Form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    m_comport1 = New IO.Ports.SerialPort("COM1") 
    AddHandler m_comport1.DataReceived, AddressOf Comport_DataReceived 
End Sub 

Private Sub SendData(p_data() As Byte) 

    m_comport1.Write(p_data, 0, p_data.Length) 

End Sub 

Private Sub SendData(p_data As String) 

    m_comport1.Write(p_data) 

End Sub 

Private Sub Comport_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) 
    Dim bytesAvailable = m_comport1.BytesToRead 
    Dim tempData(bytesAvailable) As Byte 
    m_comport1.Read(tempData, 0, bytesAvailable) 

End Sub 
+0

嗯,,,,,我指定的語言:程序集;)謝謝。雖然我不知道VB會嘗試將其轉換爲程序集。 –

+0

哈哈,對不起。通過Assembly,我認爲你的意思是像.DLL這樣的單個編譯程序集。不知道任何人仍然使用集會了。祝你好運。 –

+0

大量的彙編語言編程正在進行中,它確實不會因爲編譯器用來完成它們的事情而死去(不是所有的代碼都已經足夠流行)。對於Visual Basic,我們也可以做同樣的「不知道誰再使用_blank_」。 –