易码技术论坛

 找回密码
 加入易码
搜索
查看: 727347|回复: 20

[源码] [讨论]实现文曲星所有机型的hl-203有线传输

[复制链接]
发表于 2006-3-12 09:48:00 | 显示全部楼层
我也想过呵呵,但是,我觉得可以开发不同的机型的一种共用的传输系统,比如NC系列用BAS编,TC800用LAVA编,还有一些就用BIN编!
发表于 2006-3-14 17:38:00 | 显示全部楼层
不同机型的文件传输编码方式应该是不一样的要实现必须搞懂所有机型的编码方式.(本人愚见,高手勿笑)
 楼主| 发表于 2006-3-18 19:02:00 | 显示全部楼层
编码不同应该没有关系,只要重新设计一套统一编码即可(FTPLINK不就是这样做的?)。当然也可以移植ggv的官方互传程序,个人觉得TC1000那种很好,直接使用HL-203附带的连线。

目前似乎还没有见过LAVA有有关于硬件的程序,大概汇编是唯一解决办法。
发表于 2006-3-20 05:22:00 | 显示全部楼层
LAVA没办法的,汇编万万岁.
发表于 2006-4-29 13:05:00 | 显示全部楼层
LAVA的编出来了啊 TC800的 PS 惊见楼主与偶的一帖相似 按日期看 偶成盗版了
发表于 2007-1-22 17:45:40 | 显示全部楼层
TC808的LAVA可以啊!哈哈哈哈!
发表于 2007-1-22 17:49:55 | 显示全部楼层
声音函数

原型:int PlayInit(int mhead)
功能:将DSP通电打开,进入就绪状态。等待放入发音数据。
输入:mhead DSP打开类型参数,TC808中mhead=0
输出:返回非0 则失败,失败的可能包括电压不足够发音。返回0成功
        
—————————————————————————————
原型:char PlayFile(char fp,long ps, long pe, int time);
功能:播放音频文件,TC808中支持A1600文件
输入:fp:文件句柄
ps:要发声的内容起点
pe:要发声的内容终点
time:显示的时间
输出:如果=255,则为失败。0为成功
        
————————————————————————————
原型:void PlayStops()
功能:关闭声音播放

————————————————————————————
原型:viod PlaySleep()
功能:暂停声音                        
—————————————————————————————
原型:void SetVolume(char vol)
功能:调节发音音量。
输入:音量(0~11),不能超过12,否则可能使机器重启。

——————————————————————
原型:void PlayWordVoice(char p2,char p1,char p0);
功能:调用字典发音函数,单词发音
说明:文曲星英汉辞典的ID占3个byte,p0为低8位,p2为高8;
   ID值与具体情况相同

举例:
    TC808中:
     PlayWordVoice(0,0,0)将发 A 的音,
     PlayWordVoice(0,0,2)将发 a bit 的音
发表于 2007-1-22 17:52:13 | 显示全部楼层
屏幕两边的ICON管理

原型:void RefreshIcon(void)
功能:刷新屏幕两侧的ICON
说明:中相关ICON定义如下
//方向键ICON
#define ARROW_ICON_STATE    0x390    //方向键ICON地址
#define DOWN_ARROW_ICON    0x80 //0x390的bit7为向下ICON
#define UP_ARROW_ICON    0x40 //0x390的bit6为向上ICON
#define LEFT_ARROW_ICON    0x20 //0x390的bit5为向左ICON
#define RIGHT_ARROW_ICON    0x10 //0x390的bit4为向右ICON

//Speaker ICON
#define SPEAKER_ICON_STATE    0x391    //speaker icon 地址
#define SPEAKER_ICON        0x02    //bit1
#define LCD_RIGHT_ICON        0x38F    //美式发音bit5
#define USA_SPEAKER_ICON    0x20  //美式发音bit5

//F1、F2、F3、F4 ICON
#define LCD_F1F2_ICON        0x38a
#define LCD_F3F4_ICON        0x38f


//+方向键ICON管理
//+  例如左方向键和上方向键可用,可调用
//+  UpdateArrowIcon(LEFT_ARROW_ICON+UP_ARROW_ICON);
char UpdateArrowIcon(char value){
    *(ARROW_ICON_STATE)=((*(ARROW_ICON_STATE))&0x0F)|value;
    RefreshIcon();
}

//+喇叭ICON管理
//+  value=0关闭SpeakerIcon, value非零打开SpeakerIcon
char UpdateSpeakerIcon(char value){
    if(value){
        *(SPEAKER_ICON_STATE)=(*(SPEAKER_ICON_STATE))|SPEAKER_ICON;
        *(LCD_RIGHT_ICON)=(*(LCD_RIGHT_ICON))|USA_SPEAKER_ICON;
    }
    else {
        *(SPEAKER_ICON_STATE)=(*(SPEAKER_ICON_STATE)) & (0xFF-SPEAKER_ICON);
        *(LCD_RIGHT_ICON)=(*(LCD_RIGHT_ICON))& (0xFF-USA_SPEAKER_ICON);
    }
    RefreshIcon();
}
//+F1~F4 ICON管理
char UpdateF1Icon(char value){
    if(value) *(LCD_F1F2_ICON)=*(LCD_F1F2_ICON) | 0x02;
    else *(LCD_F1F2_ICON)=*(LCD_F1F2_ICON) & 0xFD;
    RefreshIcon();
}
char UpdateF2Icon(char value){
    if(value) *(LCD_F1F2_ICON)=*(LCD_F1F2_ICON) | 0x01;
    else *(LCD_F1F2_ICON)=*(LCD_F1F2_ICON) & 0xFE;
    RefreshIcon();
}
char UpdateF3Icon(char value){
    if(value) *(LCD_F3F4_ICON)=*(LCD_F3F4_ICON) | 0x80;
    else *(LCD_F3F4_ICON)=*(LCD_F3F4_ICON) & 0x7F;
    RefreshIcon();
}
char UpdateF4Icon(char value){
    if(value) *(LCD_F3F4_ICON)=*(LCD_F3F4_ICON) | 0x40;
    else *(LCD_F3F4_ICON)=*(LCD_F3F4_ICON) & 0xBF;
    RefreshIcon();
}
发表于 2007-1-22 17:52:42 | 显示全部楼层
串口通信函数

原型:void open_uart(int BaudRate)
功能:打开UART端口,并设置波特率
   
————————————————————————————
原型:void close_uart()
功能:关闭UART端口
说明:返回值 < 0xFF则没有读取到,返回值    > 0xFF 低8位为读取的数据

        
————————————————————————————
原型:unsigned int read_uart()
功能:从uart读入一个Byte
说明:
        
———————————————————————————

原型:void write_uart(byte wbyte)
功能:写入一个Byte到Uart
说明:

            
举例:

#define    BaudRate115k    1
#define    BaudRate57k    2
#define    BaudRate38k    3
#define    BaudRate19k    4
#define    BaudRate9600    5
#define    BaudRate2400    6
   
main()
{
    unsigned int    recv_data;
    unsigned char    byte;
    open_uart(9600);

    write_uart(0xaa);

    recv_data = read_uart();

    if(recv_data > 0xff){
        byte = recv_data & 0xFF;   
    }
    close_uart();
}
发表于 2007-1-22 17:53:37 | 显示全部楼层
目录操作函数

原型:char opendir(int path)
功能:该函数打开并返回一个目录名为path的目录流,以供读取
说明:
输入:目录名称;
输出:目录句柄指针,错误返回NULL

————————————————————————————
原型:int readdir(char p)
功能:读取目录下的文件名
输入:目录句柄;
输出:文件名串指针。
说明:使用的时候需要搬移出来,不要破坏指针区域。如果目录中没有更多内容或者有错误,则返回NULL
            
————————————————————————————
原型:void rewinddir(char p)
功能:用来重新初始化目录流path,如果调用readdir将会再次返回目录中第一项的有关内容
说明:
输入:目录句柄
输出:Void
            
————————————————————————————
原型:int closedir(char p)
功能:关闭目录句柄
说明:
输入:目录句柄
输出:成功返回0,失败返回-1
发表于 2007-1-24 23:11:24 | 显示全部楼层
试着写了个程序与串口调试器互传数据,证明808的串口通讯函数是可以用的。
发表于 2007-2-5 14:59:06 | 显示全部楼层
试验过,但很遗憾的是,首先在TC808与TC800的LAVA通信中就失败了…………
发表于 2007-2-5 14:59:55 | 显示全部楼层
不知道怎么回事,就是连接不上
发表于 2007-2-6 13:02:46 | 显示全部楼层
引用第13楼YERO2007-02-05 14:59发表的“”:
不知道怎么回事,就是连接不上
TC808可以和TC1000连接的,但和TC800我就没试过,可能是波特率不同或握手信号不同造成的吧!
发表于 2007-2-6 16:09:49 | 显示全部楼层
我也试过800 和808的,的确连不上,不过可以发些乱码什么的~要乱插线~~
发表于 2007-2-6 16:50:49 | 显示全部楼层
发些乱码什么的,还要要乱插线
不会弄出什么事吧
发表于 2007-2-12 03:49:03 | 显示全部楼层
最多重启一下,应该没事的
发表于 2007-6-21 19:12:01 | 显示全部楼层
利用ftplink是最好的方法,在wqx上模拟电脑端的程序
发表于 2007-6-22 08:04:15 | 显示全部楼层
NC 不都有红外线嘛?
 楼主| 发表于 2006-3-11 22:27:41 | 显示全部楼层 |阅读模式
如果实现文曲星所有机型的hl-203有线传输,特别是NC系列的,互传文件会方便很多,但是lava似乎没有有线传输的控制功能,大概也只能用汇编。如果配合ftplink的文件传输功能,应该可以省很多事。

很惭愧本人不会汇编,也只能谈谈想法,抛砖引玉。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 16:28 , Processed in 0.011604 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表