回答編集履歴

3

typo修正

2020/07/17 08:03

投稿

y_waiwai
y_waiwai

スコア87774

test CHANGED
@@ -28,6 +28,8 @@
28
28
 
29
29
  if(ch==0) return 0;
30
30
 
31
+ if(rxcnt>=(32-1)) rxcnt=0;
32
+
31
33
  rxbff[rxcnt]='\0';
32
34
 
33
35
  if(ch=='\n'){
@@ -41,8 +43,6 @@
41
43
  rxbff[rxcnt++]=ch;
42
44
 
43
45
  rxbff[rxcnt]='\0';
44
-
45
- if(rxcnt>=(32-1)) rxcnt=0;
46
46
 
47
47
  return 0;
48
48
 

2

回答に追記

2020/07/17 08:03

投稿

y_waiwai
y_waiwai

スコア87774

test CHANGED
@@ -9,3 +9,69 @@
9
9
 
10
10
 
11
11
  受信側では、受信文字を貯めていって、改行コードが来れば、今まで貯めた受信データを文字列としてあとの処理に回すようにすればいいです
12
+
13
+
14
+
15
+ ```C
16
+
17
+ int rxcnt=0;
18
+
19
+ char rxbff[32];
20
+
21
+
22
+
23
+ int rxstr(void)
24
+
25
+ {
26
+
27
+ int ch=UART_get();
28
+
29
+ if(ch==0) return 0;
30
+
31
+ rxbff[rxcnt]='\0';
32
+
33
+ if(ch=='\n'){
34
+
35
+ rxcnt=0;
36
+
37
+ return 1;
38
+
39
+ }
40
+
41
+ rxbff[rxcnt++]=ch;
42
+
43
+ rxbff[rxcnt]='\0';
44
+
45
+ if(rxcnt>=(32-1)) rxcnt=0;
46
+
47
+ return 0;
48
+
49
+ }
50
+
51
+
52
+
53
+ int main(void)
54
+
55
+ {
56
+
57
+ ...
58
+
59
+ while(1){
60
+
61
+ if(rxstr()){
62
+
63
+ rxbffに受信文字列が入ってる
64
+
65
+ }
66
+
67
+ ....
68
+
69
+ }
70
+
71
+
72
+
73
+ ```
74
+
75
+
76
+
77
+ これでわかるかな?

1

回答に追記

2020/07/17 08:01

投稿

y_waiwai
y_waiwai

スコア87774

test CHANGED
@@ -4,4 +4,8 @@
4
4
 
5
5
 
6
6
 
7
+ #C#で送信するなら、1行送信(Writeline)すればいいだけですね
8
+
9
+
10
+
7
11
  受信側では、受信文字を貯めていって、改行コードが来れば、今まで貯めた受信データを文字列としてあとの処理に回すようにすればいいです