質問するログイン新規登録

質問編集履歴

3

誤字

2019/07/04 03:21

投稿

kawauso
kawauso

スコア56

title CHANGED
File without changes
body CHANGED
@@ -148,7 +148,7 @@
148
148
  abcdefghijklmnopqrstuvwxyz
149
149
  abcdefghijklmnopqrstuvwxyz
150
150
  abcdefghijklmnopqrstuvwxyz
151
- 'Caracol.exe' (CLR v4.0.30319: Caracol.exe): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.resources\v4.0_4.0.0.0_ja_b77a5c561934e089\System.resources.dll' が読み込まれました。モジュールがシンボルなしでビルドされました。
151
+ 'Hoge.exe' (CLR v4.0.30319: Caracol.exe): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.resources\v4.0_4.0.0.0_ja_b77a5c561934e089\System.resources.dll' が読み込まれました。モジュールがシンボルなしでビルドされました。
152
152
  例外がスローされました: 'System.IO.IOException' (System.dll の中)
153
153
  System.IO.IOException: スレッドの終了またはアプリケーションの要求によって、I/O 操作が中止されました。
154
154
  場所 System.IO.Ports.SerialStream.EndRead(IAsyncResult asyncResult)

2

プログラム追記

2019/07/04 03:21

投稿

kawauso
kawauso

スコア56

title CHANGED
File without changes
body CHANGED
@@ -66,19 +66,66 @@
66
66
  **修正後**
67
67
 
68
68
  ```C#
69
- public SerialPort Port;
69
+ public SerialPort Port;
70
70
 
71
- public void main(){
71
+ public void main()
72
+ {
73
+ var port = GetPortName();
74
+ if (port != null)
75
+ {
76
+ try
77
+ {
72
- Port = new SerialPort(port, 9600, Parity.None, 8, StopBits.One);
78
+ Port = new SerialPort(port, 9600, Parity.None, 8, StopBits.One);
73
- Port.NewLine = "\n";
74
- Port.Open();
79
+ Port.Open();
80
+ while (true)
81
+ {
82
+ var msg = Port.ReadLine();
83
+ Console.WriteLine(msg);
84
+ }
85
+ }
86
+ catch (ArgumentException ae)
87
+ {
88
+ Console.WriteLine(ae);
89
+ }
90
+ catch (SystemException se)
91
+ {
92
+ Console.WriteLine(se);
93
+ }
94
+ }
95
+ }
75
96
 
76
- while (true)
97
+ private IEnumerable<string> GetSerialDeviceNames()
77
- {
98
+ {
78
- var msg = Port.ReadLine();
99
+ // System.Managementを参照に追加
100
+ var pnpEntity = new ManagementClass("Win32_PnPEntity");
101
+ var comRegex = new Regex(@"(COM[1-9][0-9]?[0-9]?)");
102
+
103
+ return pnpEntity
104
+ .GetInstances()
79
- Console.WriteLine(msg);
105
+ .Cast<ManagementObject>()
106
+ .Select(managementObj => managementObj.GetPropertyValue("Name"))
107
+ .Where(nameObj => nameObj != null)
108
+ .Select(nameObj => nameObj.ToString())
109
+ .Where(name => comRegex.IsMatch(name));
80
- }
110
+ }
111
+
112
+ private string GetPortName()
113
+ {
114
+ foreach (string device in GetSerialDeviceNames())
115
+ {
116
+ if (device.Contains("mbed"))
117
+ {
118
+ var com = new Regex(@"[^0-9]").Replace(device, "");
119
+ int num;
120
+ if (int.TryParse(com, out num))
121
+ {
122
+ return ("COM" + num);
81
- }
123
+ }
124
+ }
125
+ }
126
+
127
+ return null;
128
+ }
82
129
  ```
83
130
 
84
131
  ```Cpp
@@ -94,7 +141,14 @@
94
141
  }
95
142
  ```
96
143
 
97
- エラー
144
+ **エラー**
145
+ ...
146
+ abcdefghijklmnopqrstuvwxyz
147
+ abcdefghijklmnopqrstuvwxyz
148
+ abcdefghijklmnopqrstuvwxyz
149
+ abcdefghijklmnopqrstuvwxyz
150
+ abcdefghijklmnopqrstuvwxyz
151
+ 'Caracol.exe' (CLR v4.0.30319: Caracol.exe): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.resources\v4.0_4.0.0.0_ja_b77a5c561934e089\System.resources.dll' が読み込まれました。モジュールがシンボルなしでビルドされました。
98
152
  例外がスローされました: 'System.IO.IOException' (System.dll の中)
99
153
  System.IO.IOException: スレッドの終了またはアプリケーションの要求によって、I/O 操作が中止されました。
100
154
  場所 System.IO.Ports.SerialStream.EndRead(IAsyncResult asyncResult)

1

修正後プログラムを追記

2019/07/04 03:18

投稿

kawauso
kawauso

スコア56

title CHANGED
File without changes
body CHANGED
@@ -61,4 +61,45 @@
61
61
  wait_ms(50);
62
62
  }
63
63
  }
64
- ```
64
+ ```
65
+
66
+ **修正後**
67
+
68
+ ```C#
69
+ public SerialPort Port;
70
+
71
+ public void main(){
72
+ Port = new SerialPort(port, 9600, Parity.None, 8, StopBits.One);
73
+ Port.NewLine = "\n";
74
+ Port.Open();
75
+
76
+ while (true)
77
+ {
78
+ var msg = Port.ReadLine();
79
+ Console.WriteLine(msg);
80
+ }
81
+ }
82
+ ```
83
+
84
+ ```Cpp
85
+ #include "mbed.h"
86
+
87
+ Serial pc(USBTX, USBRX); // tx, rx
88
+
89
+ int main() {
90
+ while(1) {
91
+ pc.printf("abcdefghijklmnopqrstuvwxyz\n");
92
+ wait_ms(50);
93
+ }
94
+ }
95
+ ```
96
+
97
+ エラー
98
+ 例外がスローされました: 'System.IO.IOException' (System.dll の中)
99
+ System.IO.IOException: スレッドの終了またはアプリケーションの要求によって、I/O 操作が中止されました。
100
+ 場所 System.IO.Ports.SerialStream.EndRead(IAsyncResult asyncResult)
101
+ 場所 System.IO.Ports.SerialStream.Read(Byte[] array, Int32 offset, Int32 count, Int32 timeout)
102
+ 場所 System.IO.Ports.SerialStream.Read(Byte[] array, Int32 offset, Int32 count)
103
+ 場所 System.IO.Ports.SerialPort.InternalRead(Char[] buffer, Int32 offset, Int32 count, Int32 timeout, Boolean countMultiByteCharsAsOne)
104
+ 場所 System.IO.Ports.SerialPort.ReadTo(String value)
105
+ 場所 System.IO.Ports.SerialPort.ReadLine()