📄 hyperterminal.lst
字号:
157 4 SerialSendByte(0x08);
158 4 }
159 3 SerialBuffer[CursorPosion] = '\0';
160 3 break;
161 3 case '\r':
162 3 case '\n':
163 3 case '\0':
164 3 SerialSendByte('\r');
165 3 SerialSendByte('\n');
166 3 ExecCommandFlag = 1;
167 3 break;
168 3 case '\t':
169 3 break;
170 3 default:
171 3 if(CursorPosion < MAX_SERIAL_BUFFER_SIZE)
172 3 {
173 4 SerialBuffer[CursorPosion] = SbufTemp;
174 4 SerialSendByte(SbufTemp);
175 4 CursorPosion++;
176 4 }
177 3 else
178 3 {
179 4 CursorPosion = 0;
C51 COMPILER V7.09 HYPERTERMINAL 01/03/2007 02:19:15 PAGE 4
180 4 memset(&SerialBuffer[0],'\0',MAX_SERIAL_BUFFER_SIZE);
181 4 SerialSendStr("\r\n Warnning:Your command string is too long!\r\n\r\n");
182 4 SerialSendStr(&PromptBuffer[0]);
183 4 }
184 3 break;
185 3 }
186 2 }
187 1 }
188
189 void ParseArgs(char *argstr,char *argc_p,char **argv, char **resid)
190 {
191 1 char argc = 0;
192 1 char c;
193 1 PARSESTATE stackedState,lastState = PS_WHITESPACE;
194 1
195 1 while ((c = *argstr) != 0)
196 1 {
197 2 PARSESTATE newState;
198 2
199 2 if (c == ';' && lastState != PS_STRING && lastState != PS_ESCAPE)
200 2 break;
201 2
202 2 if (lastState == PS_ESCAPE)
203 2 {
204 3 newState = stackedState;
205 3 }
206 2 else if (lastState == PS_STRING)
207 2 {
208 3 if (c == '"')
209 3 {
210 4 newState = PS_WHITESPACE;
211 4 *argstr = 0;
212 4 }
213 3 else
214 3 {
215 4 newState = PS_STRING;
216 4 }
217 3 }
218 2 else if ((c == ' ') || (c == '\t'))
219 2 {
220 3 *argstr = 0;
221 3 newState = PS_WHITESPACE;
222 3 }
223 2 else if (c == '"')
224 2 {
225 3 newState = PS_STRING;
226 3 *argstr++ = 0;
227 3 argv[argc++] = argstr;
228 3 }
229 2 else if (c == '\\')
230 2 {
231 3 stackedState = lastState;
232 3 newState = PS_ESCAPE;
233 3 }
234 2 else
235 2 {
236 3 if (lastState == PS_WHITESPACE)
237 3 {
238 4 argv[argc++] = argstr;
239 4 }
240 3 newState = PS_TOKEN;
241 3 }
C51 COMPILER V7.09 HYPERTERMINAL 01/03/2007 02:19:15 PAGE 5
242 2
243 2 lastState = newState;
244 2 argstr++;
245 2 }
246 1
247 1 argv[argc] = NULL;
248 1 if (argc_p != NULL)
249 1 *argc_p = argc;
250 1
251 1 if (*argstr == ';')
252 1 {
253 2 *argstr++ = '\0';
254 2 }
255 1 *resid = argstr;
256 1 }
257
258 void ExecCommand(char *buf)
259 {
260 1 char argc,*argv[8],*resid,i;
261 1 COMMAND *Command = 0;
262 1
263 1 while(*buf)
264 1 {
265 2 memset(argv,0,sizeof(argv));
266 2 ParseArgs(buf, &argc, argv, &resid);
267 2 if(argc > 0)
268 2 {
269 3 for(i = 0; i < MAX_COMMAND_NUM; i++)
270 3 {
271 4 Command = &CommandList[i];
272 4 if(strncmp(Command->CommandName,argv[0],strlen(argv[0])) == 0)
273 4 break;
274 4 else
275 4 Command = 0;
276 4 }
277 3 if(Command == 0)
278 3 {
279 4 SerialSendStr(" Could not found \"");
280 4 SerialSendStr(argv[0]);
281 4 SerialSendStr("\" command\r\n");
282 4 SerialSendStr(" If you want to konw available commands, type 'help'\r\n\r\n");
283 4 }
284 3 else
285 3 {
286 4 Command->CommandFunc(argc,argv);
287 4 }
288 3 }
289 2 buf = resid;
290 2 }
291 1 }
292
293 void RunHyperTerminal(void)
294 {
295 1 if(ExecCommandFlag)
296 1 {
297 2 ExecCommand(&SerialBuffer[0]);
298 2 SerialSendStr(&PromptBuffer[0]);
299 2 memset(&SerialBuffer[0],'\0',MAX_SERIAL_BUFFER_SIZE);
300 2 CursorPosion = 0;
301 2 ExecCommandFlag = 0;
302 2 }
303 1 }
C51 COMPILER V7.09 HYPERTERMINAL 01/03/2007 02:19:15 PAGE 6
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1263 ----
CONSTANT SIZE = 735 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 36 54
IDATA SIZE = 26 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -