質問編集履歴

3

エラー部追記

2022/04/24 20:24

投稿

yellowcloak
yellowcloak

スコア2

test CHANGED
File without changes
test CHANGED
@@ -41,6 +41,7 @@
41
41
 
42
42
  ```
43
43
  **ご回答をいただいたもの参考に以下のように変更してみました。**
44
+ this.Invoke(add, data);のところで
44
45
  System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。とエラーが出てしまい、今までこのようなことがなかったのですが、どこを修正するとこのエラーが解消できるか悩んでおります。
45
46
  ご教示いただきたくお願いします。
46
47
 

2

コード変更 エラー対処 

2022/04/24 13:35

投稿

yellowcloak
yellowcloak

スコア2

test CHANGED
File without changes
test CHANGED
@@ -40,4 +40,146 @@
40
40
  }
41
41
 
42
42
  ```
43
+ **ご回答をいただいたもの参考に以下のように変更してみました。**
44
+ System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。とエラーが出てしまい、今までこのようなことがなかったのですが、どこを修正するとこのエラーが解消できるか悩んでおります。
45
+ ご教示いただきたくお願いします。
43
46
 
47
+
48
+ ```ここに言語を入力
49
+ public partial class Form1 : Form
50
+ {
51
+ private TextBox[] txtBoxes;
52
+
53
+ public Form1()
54
+ {
55
+ InitializeComponent();
56
+
57
+ int width = 100;
58
+ int counter = 0;
59
+
60
+
61
+ for (var i = 0; i < 8; i++)
62
+ {
63
+
64
+ for(var j =0; j < 8; j++)
65
+ {
66
+
67
+ new TextBox
68
+ {
69
+ Name = $"textBox{counter + 1}",
70
+ Location = new Point(j * width + 70, i * 28 + 30),
71
+ Size = new Size(20,5),
72
+ Parent = this,
73
+ };
74
+ new Label
75
+ {
76
+ Name = $"testPIXCEL{i + 1}",
77
+ Text = $"PIXECL{counter+ 1}",
78
+ Location = new Point(j * width + 6, i * 28 + 30),
79
+ Size = new Size(60, 15),
80
+ Parent = this,
81
+ };
82
+ counter++;
83
+ txtBoxes = new TextBox[counter];
84
+
85
+ }
86
+
87
+
88
+ }
89
+
90
+
91
+ }
92
+
93
+ private void Form1_Load(object sender, EventArgs e)
94
+ {
95
+ string[] ports = SerialPort.GetPortNames();
96
+
97
+ foreach (string port in ports)
98
+ {
99
+ comboBox1.Items.Add(port);
100
+ //確認できるCOMポートを取得して表示する。
101
+ }
102
+
103
+ if (comboBox1.Items.Count > 0)
104
+ comboBox1.SelectedIndex = 0;
105
+
106
+ }
107
+ private delegate void AddRecievedDataDelegate(string data);
108
+ private void SerialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
109
+ {
110
+ //! シリアルポートをオープンしていない場合、処理を行わない.
111
+ if (serialPort1.IsOpen == false)
112
+ {
113
+ return;
114
+ }
115
+ else
116
+ {
117
+ string data = string.Empty;
118
+
119
+ try
120
+ {
121
+ //受信データの読み取り
122
+
123
+ data = serialPort1.ReadExisting();
124
+
125
+ }
126
+ catch (Exception ex)
127
+ {
128
+ MessageBox.Show(ex.Message);
129
+ }
130
+ AddRecievedDataDelegate add = new AddRecievedDataDelegate(AddRecievedData);
131
+ this.Invoke(add, data);
132
+ }
133
+ }
134
+
135
+
136
+ private void AddRecievedData(string data)
137
+ {
138
+ string[] stringdata = new string[] { "\r\n" };
139
+ string[] disdata = data.Split(stringdata, StringSplitOptions.None);
140
+ for(var i =0; i< txtBoxes.Length; i++)
141
+ {
142
+ if(i < disdata.Length)
143
+ {
144
+ txtBoxes[i].Text = disdata[i];
145
+ }
146
+ else
147
+ {
148
+ txtBoxes[i].Text = "---";
149
+ }
150
+ }
151
+ }
152
+
153
+ private void button1_Click(object sender, EventArgs e)
154
+ {
155
+ if (serialPort1.IsOpen == true)
156
+ {
157
+ //! シリアルポートをクローズする.
158
+ serialPort1.Close();
159
+
160
+ //! ボタンの表示を[切断]から[接続]に変える.
161
+ button1.Text = "接続";
162
+ }
163
+ else
164
+ {
165
+ //! オープンするシリアルポートをコンボボックスから取得
166
+ serialPort1.PortName = comboBox1.SelectedItem.ToString();
167
+
168
+ serialPort1.BaudRate = 115200;
169
+ serialPort1.Parity = Parity.None;
170
+ serialPort1.DataBits = 8;
171
+ serialPort1.StopBits = StopBits.One;
172
+ serialPort1.Handshake = Handshake.None;
173
+ serialPort1.Open();
174
+
175
+ //! ボタンの表示を[切断]から[接続]に変える.
176
+ button1.Text = "切断";
177
+ }
178
+
179
+ }
180
+
181
+ }
182
+ }
183
+
184
+ コード
185
+ ```

1

dataの中身の追記

2022/04/22 12:28

投稿

yellowcloak
yellowcloak

スコア2

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,8 @@
7
7
  dataに格納された文字列型のデータをどのように処理したらいいのかご教示いただいたいです。
8
8
  for文を使ってデータをそれぞれtextBox1~64へ格納したいです。
9
9
  そこから何をしていったらいいのかわからず困っております。
10
+
11
+ dataに入っている中身は”3\r\n23\r\n22\r\n22\r\n22\r\n23\r\n…というように数字(温度)\r\nが64個繋がります。最初の3は固定値です。
10
12
 
11
13
  ```ここに言語を入力
12
14
  private void SerialPort1_DataReceived_1(object sender, SerialDataReceivedEventArgs e)