📄 s_testcomm.c
字号:
#ifndef VZ328
#define VZ328
#endif
#include <stdlib.h>
#include <stdio.h>
#include <M68328.h>
#include <ppsm.h>
#include <errors.h>
#include <proto.h>
#include "sample.h"
#include "main.h"
#include "tools.h"
#include "Sunray.h"
void CommunicationApp(void)
{
U32 size,tmp,temp;
U16 i, j,value,k,retry;
S16 xSPos,ySPos,x,y;
U8 loop,xpos,touchflag,tempkey,checktouch;
U32 cancelsendIconId;
U32 looptimes;
TEXT comingtxt[]={'正','在','通','信','..','..','..',0};
TEXT successtxt[]={'通','信','成','功',0};
TEXT cancelTxt[]={'返','回',0};
TEXT ReceiveTxt[]={'收','到','数','据',':',0};
TEXT NoDataTxt[]={'没','有','数','据',0};
TEXT TimeOutTxt[]={'通','信','超','时','!',0};
ClearScreen(WHITE);
*(P_U32)0xFFFFF304|=0x00100000;
retry=0;
loop=1;
checktouch=0;
looptimes=0;
CodeIndex=0;
BufferIndex=0;
touchflag=0;
UartSendFlag |= COMM_SEND;
PacketStatus |= PS_START;
PacketStatus &= ~PS_READY;
UartSendFlag &= ~NOSUCESS;
Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 50, 130, (P_U8)comingtxt);
//重新配置通信串口
/**
//Use UART1
Uart_Init(1);
if (UART_Configure(UART_NORMAL_MODE, UART_9600_BPS, NO_PARITY,
ONE_STOP_BIT, EIGHT_BIT_CHAR,1) !=PPSM_OK )rv = PPSM_ERROR;
**
//Use UART2
Uart_Init(2);
**
if (UART_Configure(UART_NORMAL_MODE, UART_9600_BPS, NO_PARITY,
ONE_STOP_BIT, EIGHT_BIT_CHAR,2) !=PPSM_OK )rv = PPSM_ERROR;
**
if (UART_Configure(UART_NORMAL_MODE, UART_4800_BPS, EVEN_PARITY,
ONE_STOP_BIT, EIGHT_BIT_CHAR,2) !=PPSM_OK )rv = PPSM_ERROR;
**/
if (TextButton(&cancelsendIconId, GB_NORMAL_FONT,(P_TEXT)cancelTxt, 60, 270, 120, 40, 0)
!= PPSM_OK) rv=PPSM_ERROR;
while (loop) {
//RecieveDataFrom_Uart1Register();//Use UART1
RecieveDataFrom_Uart2Register();//Use UART2
UARTRecieveData();
if ((UartSendFlag & COMM_SEND) && retry<10) {
//Uart1SendDataPacket(ASDPacket,ASDPLength);//Use UART1
Uart2SendDataPacket(ASDPacket,ASDPLength);//Use UART2
UartSendFlag &=~COMM_SEND;
UartSendFlag |=NOSUCESS;
retry++;
} else if (retry>=10) {
goto ErrorTimeOutFlag;
}
looptimes++;
if (((looptimes % 3000)==0) && (UartSendFlag & NOSUCESS)) {
UartSendFlag |=COMM_SEND;
looptimes=1;
}
if (CodeIndex==0x0A && (PacketStatus & PS_READY)) {
CodeIndex=0;
PacketStatus &= ~PS_READY;
BUZZER_ON();
EL_ON();
ClearScreen(WHITE);
Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 50, 110, (P_U8)successtxt);
Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 50, 130, (P_U8)ReceiveTxt);
Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 50, 150, (P_U8)PacketBuffer);
DelaySomeTime();
DelaySomeTime();
DelaySomeTime();
DelaySomeTime();
DelaySomeTime();
DelaySomeTime();
goto SuccessFlag;
}
PenReadDevice(&x,&y);
xSPos= ConvertLCDX(x);
ySPos= ConvertLCDY(y);
if (xSPos >270 && xSPos<310 && ySPos >60 && ySPos <180) {
if (InvRec(271,61,38,118) != PPSM_OK) rv = PPSM_ERROR;
detectcancel:
PenReadDevice(&x,&y);
xSPos= ConvertLCDX(x);
ySPos= ConvertLCDY(y);
if (xSPos >270 && xSPos<310 && ySPos >60 && ySPos <180) {
for (i=0;i<0xFFFF;i++);
goto detectcancel;
}
checktouch=1;
}else {
if (checktouch==1) {
goto SuccessFlag;
}
}
}
ErrorTimeOutFlag:
ClearScreen(WHITE);
Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 50, 130, (P_U8)TimeOutTxt);
DelaySomeTime();
DelaySomeTime();
*(P_U32)0xFFFFF304 &=0x00EFFFFF;
CodeIndex=0;
//RecieveDataFrom_Uart1Register();//Use UART1
RecieveDataFrom_Uart2Register();//Use UART2
ClearPacketBuffer();
ClearSCI_IQ();
return;
SuccessFlag:
ClearScreen(WHITE);
*(P_U32)0xFFFFF304 &=0x00EFFFFF;
CodeIndex=0;
//RecieveDataFrom_Uart1Register();//Use UART1
RecieveDataFrom_Uart2Register();//Use UART2
ClearPacketBuffer();
ClearSCI_IQ();
return;
}
//数据打包
U16 CommPackage(void)
{
U16 i,j;
U8 tmpCheck;
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
//数据包格式:AA AA 0A 30 31 32 33 34 35 36 37 38 39 6B 1A
// |----|--|-----------------------------|--|--|
// 包头 命令 数据 校验|包尾
j=0;
ASDPacket[j]=0xAA;
j++;
ASDPacket[j]=0xAA;
j++;
ASDPacket[j]=0x0A;
j++;
for (i=0;i<10;i++) {
ASDPacket[j]='0'+i;
j++;
}
tmpCheck=0;
for (i=0;i<j;i++) {
tmpCheck=tmpCheck+ASDPacket[i];
}
ASDPacket[j]=tmpCheck;
j++;
ASDPacket[j]=0x1A;
j++;
return j;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -