Hallo,
Ich habe ein kleines problem mit meinen Programm:
Ich habe einen seriellen Port COM3, COM4 und COM5 auf meinen Bluetooth
adapter erstellt. Über den Gerätemanager kann ich jetzt auch die
verschiedenen baudraten einstellen, jedoch erkennt mein Programm die
Baudrate nicht, und kann die auch nicht ändern. - Es wird jedes mal eine
Baudrate von 9600 ausgelesen.
Hier mal mein bisheriger Sourcecode
1 | using System;
|
2 | using System.Collections.Generic;
|
3 | using System.ComponentModel;
|
4 | using System.Data;
|
5 | using System.Drawing;
|
6 | using System.Linq;
|
7 | using System.Text;
|
8 | using System.Threading.Tasks;
|
9 | using System.Windows.Forms;
|
10 | using System.IO;
|
11 | using System.IO.Ports;
|
12 |
|
13 | namespace SerComm
|
14 | {
|
15 | public partial class Form1 : Form
|
16 | {
|
17 | public string st;
|
18 | public Form1()
|
19 | {
|
20 | InitializeComponent();
|
21 | }
|
22 |
|
23 | private void Form1_Load(object sender, EventArgs e)
|
24 | {
|
25 | GetNames();
|
26 | }
|
27 |
|
28 | private void RefreshButton_Click(object sender, EventArgs e)
|
29 | {
|
30 | GetNames();
|
31 | }
|
32 |
|
33 | private void ComportTreeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
34 | {
|
35 | string s;
|
36 | s = ComportTreeView1.SelectedNode.ToString();
|
37 | if (s.Contains("COM") == true)
|
38 | {
|
39 | st = s;
|
40 | }
|
41 | }
|
42 |
|
43 | private void SetBaudButton2_Click(object sender, EventArgs e)
|
44 | {
|
45 | SerialPort sp = new SerialPort();
|
46 | sp.PortName = st;
|
47 | sp.BaudRate = Convert.ToInt32(SelectBaudrateComboBox1.SelectedItem.ToString());
|
48 | GetNames();
|
49 | }
|
50 |
|
51 | private void GetNames()
|
52 | {
|
53 | ComportTreeView1.ImageList = imageList1;
|
54 | ComportTreeView1.Nodes.Clear();
|
55 | foreach (string s in SerialPort.GetPortNames())
|
56 | {
|
57 | SerialPort sp = new SerialPort();
|
58 | sp.PortName = s;
|
59 | TreeNode ParentNode = new TreeNode();
|
60 | ParentNode.Text = s;
|
61 | ParentNode.ImageIndex = 0;
|
62 | ParentNode.SelectedImageIndex = 0;
|
63 | ComportTreeView1.Nodes.Add(ParentNode);
|
64 |
|
65 | }
|
66 | ComportTreeView1.ImageIndex = 1;
|
67 | ComportTreeView1.SelectedImageIndex = 1;
|
68 | foreach (TreeNode tn in ComportTreeView1.Nodes)
|
69 | {
|
70 | SerialPort sp = new SerialPort();
|
71 | sp.PortName = tn.Nodes.ToString();
|
72 |
|
73 | tn.Nodes.Add("Baud: " + sp.BaudRate.ToString());
|
74 | tn.Nodes.Add("Databits: " + sp.DataBits.ToString());
|
75 | tn.Nodes.Add("Parity: " + sp.Parity.ToString());
|
76 | tn.Nodes.Add("Stopbits: " + sp.StopBits.ToString());
|
77 | tn.Nodes.Add("Handshake: " + sp.Handshake.ToString());
|
78 | }
|
79 |
|
80 |
|
81 | ComportTreeView1.ExpandAll();
|
82 |
|
83 | }
|
84 | }
|
85 | }
|
Über den Gerätemanager kann ich wie oben bereits geschrieben jede
mögliche Baudrate einstellen, jedoch werden von meinen Programm immer
nur 9600 Baud ausgelesen - Egal ob die Baudrate über mein Programm, oder
im Gerätemanager eingestellt wurde.
Jetzt ist meine Frage: gibt es irgend eine möglichkeit meine Baudrate zu
ändern?
Ich hoffe, ihr könnt mir helfen.
Mit freundlichen grüßen
Pascal