2013-07-30 51 views
1

我正在嘗試寫入.xml文件,並且出現錯誤未將對象引用設置爲對象的實例。 on line 49 (CreateNode)。這是我試過的代碼,但沒有運氣。第二種形式使用SerialPort

private void CreateNode(string Port, string BaudRate, string DataBits, string Parity,_ 
string StopBits, string Handshaking, XmlTextWriter writer) 
{ 
    //Writing to the .xml file. This will make the program be able to load the properties last used. 
    writer.WriteStartElement("ApplicationProperties"); 
    writer.WriteStartElement("Port"); 
    writer.WriteString(Port); 
    writer.WriteEndElement(); 
    writer.WriteStartElement("BaudRate"); 
    writer.WriteString(BaudRate); 
    writer.WriteEndElement(); 
    writer.WriteStartElement("DataBits"); 
    writer.WriteString(DataBits); 
    writer.WriteEndElement(); 
    writer.WriteStartElement("Parity"); 
    writer.WriteString(Parity); 
    writer.WriteEndElement(); 
    writer.WriteStartElement("StopBits"); 
    writer.WriteString(StopBits); 
    writer.WriteEndElement(); 
    writer.WriteStartElement("Handshaking"); 
    writer.WriteString(Handshaking); 
    writer.WriteEndElement(); 
    writer.WriteEndElement(); 
} 

private void SaveProperties() 
{ 
    //CreateNode(everything being referenced. Put text boxes, and drop down boxes here. 
    XmlTextWriter writer = new XmlTextWriter(@"C:\ForteSenderv2.0\Properties.xml", System.Text.Encoding.UTF8); 
    writer.WriteStartDocument(true); 

    //Making the code indeted by 2 characters. 
    writer.Formatting = Formatting.Indented; 
    writer.Indentation = 2; 

    //Making the start element "Table". 
    writer.WriteStartElement("Forte_Data_Gatherer_Application"); 
    //Calling the rst of the .xml file to write. 
    CreateNode(ApplicationPort.PortName, ApplicationPort.BaudRate.ToString(), ApplicationPort.DataBits.ToString(), ApplicationPort.Parity.ToString(), ApplicationPort.StopBits.ToString(), ApplicationPort.Handshake.ToString(), writer); 
    writer.WriteEndElement(); 
    writer.WriteEndDocument(); 
    writer.Close(); 
} 
+2

您的代碼段實際上並不包含代碼不起作用,也沒有名爲「SerialPorts」的類。你需要更好地記錄你的問題。 –

+0

我已經更新了這個問題。我只是把所有我遇到問題的代碼放在一起。我希望它不會太長。 –

+0

第49行,當我試圖寫入.xml文件。並非常感謝您的幫助。你是這個網站上的第一個人,而不是僅僅說不夠好。 –

回答

2
Dim mySerialPort as serialPort 

mySerialPort.PortName = SetPortName(mySerialPort.ApplicationPort); 

MSDN is a great resource


編輯

error: Object reference not set to an instance of an object. on line 49 (CreateNode). 

private void CreateNode(string Port, string BaudRate, string DataBits, string Parity,_ 
string StopBits, string Handshaking, XmlTextWriter writer) 

private void blabla (PortName as string, BaudRate as string, DataBits as string,_ 
Parity as string, Handshaking as string) 

我看不出你如何有XmlTextWriter的在那裏。 個人而言,我還沒有看到任何這樣的事情。我可以看到你的努力,真的很感謝你的工作以及你想要達到的目標,我真的認爲你是過於複雜的事情。編碼技巧(不是我是一個專家),是用最簡單的方法來創建你需要的功能。儘可能短,只要有必要。

我認爲你需要重新考慮你正在努力實現的算法,我是以最簡單的方式去解決這個問題,還是我爲這個項目做了不必要的複雜處理?

When creating subs, functions等等,你不需要將所有的變量填入頂部的聲明中。這是身體的目的。

我強烈建議您使用MSDN並多研究一下,它會變得更容易。這裏是鏈接到MSDN .Net Framework Class Library - 它涵蓋了一切:)

+0

這是否與我在Form1上的SerialPort相同?所以通過使這個串口1200的波特率,它將使主窗體1200上的一個呢? –

+0

我已經更新了這個問題。我希望它更清楚。 –

+0

在哪裏可以在我的表單中聲明?在負載功能? –

相關問題