⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_testcomm.c

📁 dragon ball vz328 上的一个例子程序。 用于做手持仪表用。
💻 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 + -