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

📄 demo.c

📁 win2000下的与下位机UART的串口通信程序
💻 C
字号:
#include "stdio.h"
#include "stdlib.h"
#include "command.h"
#include <string.h>

extern int open_com(void);
extern void close_com(void);
extern void wait(int time);

#define FILE_MAX_SIZE 64*1024
char fileData[FILE_MAX_SIZE];

int GetFileSize(FILE *fp)
{
	int size;

	fseek(fp, 0, SEEK_END);
	size = ftell(fp);
	rewind(fp);

	return size;
}

int main(int argc, char **argv)
{
    char *inFile;
    FILE* fin;
    int mode;
    char buf[128];
    int len;
    int counter;
	int i;
	int rate;
	int fileSize;
	char *curPt;
	int  tmpFlag;

    if(argc < 3)
    {
        printf("Error!\n");
        exit(1);
    }
	i = open_com();
    mode = atoi(argv[1]);
    rate = atoi(argv[2]);
	inFile = argv[3];

    if((fin = fopen(inFile, "rb")) == 0){
				printf("Cannot open some source files.\n");
				fclose(fin);
    }
	
	fileSize = GetFileSize(fin);
	if(FILE_MAX_SIZE < fileSize)
	{
		printf("file is too big.\n");
		fclose(fin);
	}
	fread(fileData, 1, fileSize, fin);

    i = req_status();
	if(i == OK)
		printf("chip ok!\n");
	else
		printf("chip error!\n");
		
    i = set_uart_baud_rate(115200);
	if(i == OK)
		printf("set baud rate 115200!\n");
	else
		printf("set baud rate error!\n");

    clear_input_buffer(0);
    if(mode == 0)
    {
        speech_channel_select(0);
        set_bit_rates(rate);
        set_volume(0x200);				//0 ... 0x200
        speech_filter_control(0);
        set_lbr_speed(7);				//0 ... 15

		curPt = fileData;
		tmpFlag = 0;
		if( fileSize > 128 )
		{
			send_speech_data(curPt,128);
			speech_control(1);
			fileSize -= 128;
			curPt += 128;
			while(1)
			{
				if(check_speech_buffer() >= 128)
				{
					if(fileSize >= 128)
					{
						send_speech_data(curPt,128);
						fileSize -= 128;
						curPt += 128;
					}
					else{
						if(fileSize != 0)
							send_speech_data(curPt,fileSize);
						break;
					}
				}
			}
		}
		else
		{
			send_speech_data(curPt,fileSize);
			speech_control(1);
		}
		while(check_speech_buffer()>=240)
			speech_control(0);
		wait(500);
    }
    else if(mode == 1)
    {
        speech_channel_select(1);
        set_bit_rates(rate);
        set_volume(0x200);
		len = fread(buf,1,128,fin);
        send_speech_data(buf,128);
		speech_control(1);
		
        counter = 0;
        while(1)
        {
			if(check_speech_buffer() >= 128)
            {
				len = fread(buf,1,128,fin);
                send_speech_data(buf,len);
				if(len < 128)
				{
					speech_control(0);
					break;
				}
            }			
        }
		wait(500);
    }
    else if(mode == 2)
    {
        set_volume(0x200);
        set_midi_volume(0xffffffff);
		len = fread(buf,1,128,fin);
        send_midi_data(buf,128);
        midi_control(1);
		counter = 1;
        while(1)
        {
            if(check_midi_buffer() >= 128)
            {
				len = fread(buf,1,128,fin);
                send_midi_data(buf,len);
				if(len < 128)
				{
					midi_control(0);
					break;
				}
                counter++;
                if(counter == 2)
                {
					len = fread(buf,1,1,fin);
					if(len < 1)
					{
						midi_control(0);
						break;
					}
                    write_ram(buf,0,1);
                    counter = 0;
                }
            }
        }
		wait(500);
    }
	close_com();
	exit(1);
}




















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -