質問編集履歴
3
エラー部追記
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
コード変更 エラー対処
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の中身の追記
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)
|