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

回答編集履歴

3

typo修正

2020/07/17 08:03

投稿

y_waiwai
y_waiwai

スコア88188

answer CHANGED
@@ -13,6 +13,7 @@
13
13
  {
14
14
  int ch=UART_get();
15
15
  if(ch==0) return 0;
16
+ if(rxcnt>=(32-1)) rxcnt=0;
16
17
  rxbff[rxcnt]='\0';
17
18
  if(ch=='\n'){
18
19
  rxcnt=0;
@@ -20,7 +21,6 @@
20
21
  }
21
22
  rxbff[rxcnt++]=ch;
22
23
  rxbff[rxcnt]='\0';
23
- if(rxcnt>=(32-1)) rxcnt=0;
24
24
  return 0;
25
25
  }
26
26
 

2

回答に追記

2020/07/17 08:03

投稿

y_waiwai
y_waiwai

スコア88188

answer CHANGED
@@ -3,4 +3,37 @@
3
3
 
4
4
  #C#で送信するなら、1行送信(Writeline)すればいいだけですね
5
5
 
6
- 受信側では、受信文字を貯めていって、改行コードが来れば、今まで貯めた受信データを文字列としてあとの処理に回すようにすればいいです
6
+ 受信側では、受信文字を貯めていって、改行コードが来れば、今まで貯めた受信データを文字列としてあとの処理に回すようにすればいいです
7
+
8
+ ```C
9
+ int rxcnt=0;
10
+ char rxbff[32];
11
+
12
+ int rxstr(void)
13
+ {
14
+ int ch=UART_get();
15
+ if(ch==0) return 0;
16
+ rxbff[rxcnt]='\0';
17
+ if(ch=='\n'){
18
+ rxcnt=0;
19
+ return 1;
20
+ }
21
+ rxbff[rxcnt++]=ch;
22
+ rxbff[rxcnt]='\0';
23
+ if(rxcnt>=(32-1)) rxcnt=0;
24
+ return 0;
25
+ }
26
+
27
+ int main(void)
28
+ {
29
+ ...
30
+ while(1){
31
+ if(rxstr()){
32
+ rxbffに受信文字列が入ってる
33
+ }
34
+ ....
35
+ }
36
+
37
+ ```
38
+
39
+ これでわかるかな?

1

回答に追記

2020/07/17 08:01

投稿

y_waiwai
y_waiwai

スコア88188

answer CHANGED
@@ -1,4 +1,6 @@
1
1
  文字列として受信したいなら(というより複数バイトのデータを読みたいなら)、終端データを決めて、それを区切りに送信するようにしましょう
2
2
  文字列であれば、改行コードを送ってそれを区切りにすればいいです
3
3
 
4
+ #C#で送信するなら、1行送信(Writeline)すればいいだけですね
5
+
4
6
  受信側では、受信文字を貯めていって、改行コードが来れば、今まで貯めた受信データを文字列としてあとの処理に回すようにすればいいです