瀏覽代碼

Merge pull request #9131 from Bob-the-Kuhn/LPC-formatted-prints

[2.0.x] LPC1768 formatted print statements
Scott Lahteine 7 年之前
父節點
當前提交
cf654b9a1a
沒有連結到貢獻者的電子郵件帳戶。
共有 2 個檔案被更改,包括 178 行新增51 行删除
  1. 103
    21
      Marlin/src/HAL/HAL_LPC1768/HardwareSerial.h
  2. 75
    30
      Marlin/src/HAL/HAL_LPC1768/serial.h

+ 103
- 21
Marlin/src/HAL/HAL_LPC1768/HardwareSerial.h 查看文件

73
 
73
 
74
   void IRQHandler();
74
   void IRQHandler();
75
 
75
 
76
-  void print(const char value[])              { printf("%s" , value); }
77
-  void print(char value, int = 0)             { printf("%c" , value); }
78
-  void print(unsigned char value, int = 0)    { printf("%u" , value); }
79
-  void print(int value, int = 0)              { printf("%d" , value); }
80
-  void print(unsigned int value, int = 0)     { printf("%u" , value); }
81
-  void print(long value, int = 0)             { printf("%ld" , value); }
82
-  void print(unsigned long value, int = 0)    { printf("%lu" , value); }
83
-
84
-  void print(float value, int round = 6)      { printf("%f" , value); }
85
-  void print(double value, int round = 6)     { printf("%f" , value ); }
86
-
87
-  void println(const char value[])            { printf("%s\n" , value); }
88
-  void println(char value, int = 0)           { printf("%c\n" , value); }
89
-  void println(unsigned char value, int = 0)  { printf("%u\r\n" , value); }
90
-  void println(int value, int = 0)            { printf("%d\n" , value); }
91
-  void println(unsigned int value, int = 0)   { printf("%u\n" , value); }
92
-  void println(long value, int = 0)           { printf("%ld\n" , value); }
93
-  void println(unsigned long value, int = 0)  { printf("%lu\n" , value); }
94
-  void println(float value, int round = 6)    { printf("%f\n" , value ); }
95
-  void println(double value, int round = 6)   { printf("%f\n" , value ); }
96
-  void println(void)                          { print('\n'); }
76
+  #define DEC 10
77
+  #define HEX 16
78
+  #define OCT 8
79
+  #define BIN 2
80
+  #define BYTE 0
81
+
82
+
83
+  void print_bin(uint32_t value, uint8_t num_digits) {
84
+    uint32_t mask = 1 << (num_digits -1);
85
+    for (uint8_t i = 0; i < num_digits; i++) {
86
+      if (!(i % 4) && i)    printf(" ");
87
+      if (!(i % 16)  && i)  printf(" ");
88
+      if (value & mask)     printf("1");
89
+      else                  printf("0");
90
+      value <<= 1;
91
+    }
92
+  }
93
+
94
+  void print(const char value[]) {
95
+    printf("%s" , value);
96
+  }
97
+  void print(char value, int nbase = BYTE) {
98
+    if (nbase == BIN) print_bin(value,8);
99
+    else if (nbase == OCT) printf("%3o", value);
100
+    else if (nbase == HEX) printf("%2X", value);
101
+    else if (nbase == DEC ) printf("%d", value);
102
+    else printf("%c" , value);
103
+  }
104
+  void print(unsigned char value, int nbase = BYTE) {
105
+    if (nbase == BIN) print_bin(value,8);
106
+    else if (nbase == OCT) printf("%3o", value);
107
+    else if (nbase == HEX) printf("%2X", value);
108
+    else printf("%u" , value);
109
+  }
110
+  void print(int value, int nbase = BYTE) {
111
+    if (nbase == BIN) print_bin(value,16);
112
+    else if (nbase == OCT) printf("%6o", value);
113
+    else if (nbase == HEX) printf("%4X", value);
114
+    else printf("%d", value);
115
+  }
116
+  void print(unsigned int value, int nbase = BYTE) {
117
+    if (nbase == BIN) print_bin(value,16);
118
+    else if (nbase == OCT) printf("%6o", value);
119
+    else if (nbase == HEX) printf("%4X", value);
120
+    else printf("%u" , value);
121
+  }
122
+  void print(long value, int nbase = BYTE) {
123
+    if (nbase == BIN) print_bin(value,32);
124
+    else if (nbase == OCT) printf("%11o", value);
125
+    else if (nbase == HEX) printf("%8X", value);
126
+    else printf("%ld" , value);
127
+  }
128
+  void print(unsigned long value, int nbase = BYTE) {
129
+    if (nbase == BIN) print_bin(value,32);
130
+    else if (nbase == OCT) printf("%11o", value);
131
+    else if (nbase == HEX) printf("%8X", value);
132
+    else printf("%lu" , value);
133
+  }
134
+  void print(float value, int round = 6) {
135
+    printf("%f" , value);
136
+  }
137
+  void print(double value, int round = 6) {
138
+    printf("%f" , value );
139
+  }
140
+
141
+
142
+
143
+  void println(const char value[]) {
144
+    printf("%s\n" , value);
145
+  }
146
+  void println(char value, int nbase = BYTE) {
147
+    print(value, nbase);
148
+    println();
149
+  }
150
+  void println(unsigned char value, int nbase = BYTE) {
151
+    print(value, nbase);
152
+    println();
153
+  }
154
+  void println(int value, int nbase = BYTE) {
155
+    print(value, nbase);
156
+    println();
157
+  }
158
+  void println(unsigned int value, int nbase = BYTE) {
159
+    print(value, nbase);
160
+    println();
161
+  }
162
+  void println(long value, int nbase = BYTE) {
163
+    print(value, nbase);
164
+    println();
165
+  }
166
+  void println(unsigned long value, int nbase = BYTE) {
167
+    print(value, nbase);
168
+    println();
169
+  }
170
+  void println(float value, int round = 6) {
171
+    printf("%f\n" , value );
172
+  }
173
+  void println(double value, int round = 6) {
174
+    printf("%f\n" , value );
175
+  }
176
+  void println(void) {
177
+    print('\n');
178
+  }
97
 
179
 
98
 };
180
 };
99
 
181
 

+ 75
- 30
Marlin/src/HAL/HAL_LPC1768/serial.h 查看文件

146
     }
146
     }
147
   }
147
   }
148
 
148
 
149
+  #define DEC 10
150
+  #define HEX 16
151
+  #define OCT 8
152
+  #define BIN 2
153
+  #define BYTE 0
154
+
155
+
156
+  void print_bin(uint32_t value, uint8_t num_digits) {
157
+    uint32_t mask = 1 << (num_digits -1);
158
+    for (uint8_t i = 0; i < num_digits; i++) {
159
+      if (!(i % 4) && i)    printf(" ");
160
+      if (!(i % 16)  && i)  printf(" ");
161
+      if (value & mask)     printf("1");
162
+      else                  printf("0");
163
+      value <<= 1;
164
+    }
165
+  }
166
+
149
   void print(const char value[]) {
167
   void print(const char value[]) {
150
     printf("%s" , value);
168
     printf("%s" , value);
151
   }
169
   }
152
-  void print(char value, int = 0) {
153
-    printf("%c" , value);
154
-  }
155
-  void print(unsigned char value, int = 0) {
156
-    printf("%u" , value);
157
-  }
158
-  void print(int value, int = 0) {
159
-    printf("%d" , value);
170
+  void print(char value, int nbase = BYTE) {
171
+    if (nbase == BIN) print_bin(value,8);
172
+    else if (nbase == OCT) printf("%3o", value);
173
+    else if (nbase == HEX) printf("%2X", value);
174
+    else if (nbase == DEC ) printf("%d", value);
175
+    else printf("%c" , value);
176
+  }
177
+  void print(unsigned char value, int nbase = BYTE) {
178
+    if (nbase == BIN) print_bin(value,8);
179
+    else if (nbase == OCT) printf("%3o", value);
180
+    else if (nbase == HEX) printf("%2X", value);
181
+    else printf("%u" , value);
182
+  }
183
+  void print(int value, int nbase = BYTE) {
184
+    if (nbase == BIN) print_bin(value,16);
185
+    else if (nbase == OCT) printf("%6o", value);
186
+    else if (nbase == HEX) printf("%4X", value);
187
+    else printf("%d", value);
188
+  }
189
+  void print(unsigned int value, int nbase = BYTE) {
190
+    if (nbase == BIN) print_bin(value,16);
191
+    else if (nbase == OCT) printf("%6o", value);
192
+    else if (nbase == HEX) printf("%4X", value);
193
+    else printf("%u" , value);
194
+  }
195
+  void print(long value, int nbase = BYTE) {
196
+    if (nbase == BIN) print_bin(value,32);
197
+    else if (nbase == OCT) printf("%11o", value);
198
+    else if (nbase == HEX) printf("%8X", value);
199
+    else printf("%ld" , value);
200
+  }
201
+  void print(unsigned long value, int nbase = BYTE) {
202
+    if (nbase == BIN) print_bin(value,32);
203
+    else if (nbase == OCT) printf("%11o", value);
204
+    else if (nbase == HEX) printf("%8X", value);
205
+    else printf("%lu" , value);
160
   }
206
   }
161
-  void print(unsigned int value, int = 0) {
162
-    printf("%u" , value);
163
-  }
164
-  void print(long value, int = 0) {
165
-    printf("%ld" , value);
166
-  }
167
-  void print(unsigned long value, int = 0) {
168
-    printf("%lu" , value);
169
-  }
170
-
171
   void print(float value, int round = 6) {
207
   void print(float value, int round = 6) {
172
     printf("%f" , value);
208
     printf("%f" , value);
173
   }
209
   }
175
     printf("%f" , value );
211
     printf("%f" , value );
176
   }
212
   }
177
 
213
 
214
+
215
+
178
   void println(const char value[]) {
216
   void println(const char value[]) {
179
     printf("%s\n" , value);
217
     printf("%s\n" , value);
180
   }
218
   }
181
-  void println(char value, int = 0) {
182
-    printf("%c\n" , value);
219
+  void println(char value, int nbase = BYTE) {
220
+    print(value, nbase);
221
+    println();
183
   }
222
   }
184
-  void println(unsigned char value, int = 0) {
185
-    printf("%u\r\n" , value);
223
+  void println(unsigned char value, int nbase = BYTE) {
224
+    print(value, nbase);
225
+    println();
186
   }
226
   }
187
-  void println(int value, int = 0) {
188
-    printf("%d\n" , value);
227
+  void println(int value, int nbase = BYTE) {
228
+    print(value, nbase);
229
+    println();
189
   }
230
   }
190
-  void println(unsigned int value, int = 0) {
191
-    printf("%u\n" , value);
231
+  void println(unsigned int value, int nbase = BYTE) {
232
+    print(value, nbase);
233
+    println();
192
   }
234
   }
193
-  void println(long value, int = 0) {
194
-    printf("%ld\n" , value);
235
+  void println(long value, int nbase = BYTE) {
236
+    print(value, nbase);
237
+    println();
195
   }
238
   }
196
-  void println(unsigned long value, int = 0) {
197
-    printf("%lu\n" , value);
239
+  void println(unsigned long value, int nbase = BYTE) {
240
+    print(value, nbase);
241
+    println();
198
   }
242
   }
199
   void println(float value, int round = 6) {
243
   void println(float value, int round = 6) {
200
     printf("%f\n" , value );
244
     printf("%f\n" , value );
205
   void println(void) {
249
   void println(void) {
206
     print('\n');
250
     print('\n');
207
   }
251
   }
252
+
208
   volatile RingBuffer<uint8_t, 128> receive_buffer;
253
   volatile RingBuffer<uint8_t, 128> receive_buffer;
209
   volatile RingBuffer<uint8_t, 128> transmit_buffer;
254
   volatile RingBuffer<uint8_t, 128> transmit_buffer;
210
   volatile bool host_connected;
255
   volatile bool host_connected;

Loading…
取消
儲存