易码技术论坛

 找回密码
 加入易码
搜索
查看: 298193|回复: 17

[GVBASIC]NC2600C、NC2000C\A的红外使用经验

[复制链接]
发表于 2005-1-7 18:40:00 | 显示全部楼层
可是,现在的红外资料不是很全面啊,都是厂家封装好的,至于实际的情况不是很清楚啊,如果我想用文曲星和别的红外设备通讯怎么办呢?

4198_8780_1761.rar

3 KB, 下载次数: 945

 楼主| 发表于 2005-1-7 19:33:00 | 显示全部楼层
这个倒是没试过...不过跟手机应该是可以的,操作方法也应该一样,只不过涉及一种"协议"的问题
假如与手机通讯,那就要你对手机的传输方式非常了解,我记得ggv有手机管理器的
发表于 2005-1-7 21:26:00 | 显示全部楼层
手机通讯协议我是比较了解的,关键就是不了解文曲星的……
发表于 2005-1-8 11:12:00 | 显示全部楼层
支持楼主!
--------------------------------
楼上的,文曲星没有什么通讯协议的吧~
程序怎么写,通讯协议就是怎么样子的~
 楼主| 发表于 2005-1-8 12:14:00 | 显示全部楼层
似乎应该拿个手机和WQX一点一点试~
先让手机给WQX发个信息,然后看看WQX接到了没,或是接到了什么
我猜想f00似乎是"频道"或是"波段"之类的东西,把ggv的管理器拿来dump出来一些看看应该会有帮助...
我没手机哦!!~~-_-b~!
发表于 2005-1-8 12:18:00 | 显示全部楼层
Nc2600c的手机管理程序无法在GGV上下载,是否可以通过BAsic做一个?
 楼主| 发表于 2005-1-8 12:36:00 | 显示全部楼层
BASIC+汇编可以

不用汇编恐怕速度跟不上哦

[此贴子已经被作者于2005-1-8 12:37:07编辑过]

发表于 2005-1-8 21:45:00 | 显示全部楼层
目前也只有这个办法啦,有了结果,我告诉得大家
[此贴子已经被作者于2005-1-8 21:46:19编辑过]

4206_9122_1785.rar

19 KB, 下载次数: 428

 楼主| 发表于 2005-1-9 11:30:00 | 显示全部楼层
好,加油~(你有手机吗?最好做个能发短信的东东)
7654_9214_3091.jpg
发表于 2005-1-9 12:37:00 | 显示全部楼层
我有手机,做过手机群发器,但是时使用其他单片机做的,文曲星嘛,由于很多资料都没有,所以慢慢来吧
 楼主| 发表于 2005-1-9 12:47:00 | 显示全部楼层
哇,你好厉害,还会用单片机呢!!
发表于 2005-1-9 15:01:00 | 显示全部楼层
强![em01]
7572_9288_3100.bmp
发表于 2005-1-20 14:53:00 | 显示全部楼层
是啊  要是星星能发短信就好了
发表于 2005-1-23 10:24:00 | 显示全部楼层
目前文曲星已经可以通过下载线连接到单片机和大部分手机进行通讯(发短信当然是小菜),谁要资料我可以提供出来。
主要都是通过数据线。红外没有涉及(主要还是协议问题)
发表于 2005-1-31 13:12:00 | 显示全部楼层
支持楼主!
发表于 2005-2-24 16:41:00 | 显示全部楼层
还是要红外好
谁会做一个发邮件的通过手机gprs直接发email
我手机可以直接发就是打字慢
发表于 2005-3-27 18:34:00 | 显示全部楼层
帮我做一个阿尔卡特ot756的手机管理器吧,文曲星和阿尔卡特连不上啊,我找了好久都没有找到阿!!!!!!!!!!!
 楼主| 发表于 2005-1-7 16:39:46 | 显示全部楼层 |阅读模式
首先 调用红外要先想$f00 写入b0 f0 11 00 00 在运行中断INT $014A

数据出入的端口:3A  状态的端口:3B

使用方法:

10 S$=""OKE 199,0RINT "红外聊天室","(用于无笔纸情况下)","<Y>发话 <Q>退出"
20 INPUT "名字:";NAME$:GRAPH
30 POKE 6160,0OKE 6161,74:POKE 6162,1:POKE 6163,96
40 DATA 176,240,17,0,0
50 FOR I=3840  TO 3844:READ A:POKE I,A:NEXT
60 CALL 6160:S=0:S$=""
65 IF PEEK(199)=249  THEN POKE 199,0:GOSUB 130
66 IF PEEK(199)=128+ASC ("q") THEN POKE 199,0:TEXT :PRINT "JD SOFT!":END
70 IF PEEK(59)=97  THEN GOTO 71  ELSE GOTO 65
71 IF PEEK(58)=255  THEN GOTO 72  ELSE GOTO 65
72 IF PEEK(59)=97  THEN L=PEEK(58):I=0:S$="":GOTO 90
80 GOTO 65
90 IF PEEK(59)=97  THEN S$=S$+CHR$(PEEK(58)):I=I+1  ELSE D=D+1
100 IF D=5  THEN PRINT "连接失败!":GOTO 65
110 IF I=L  THEN PRINT S$:GOTO 65
120 GOTO 90
130 PRINT "消息(小于";20-LEN(NAME$);"字节)":INPUT "";T$ :S$=NAME$+":"+T$
131 IF LEN(S$)=0  OR LEN(S$)>20  THEN GOTO 130
140 POKE 58,255:POKE 58,LEN(S$)
150 FOR I=1  TO LEN(S$):POKE 58,ASC (MID$(S$,I,1))
155 NEXT
160 RETURN


2台机器,当红外端口刚刚打开时,会发出信号 #$55(85) 在空闲状态下 $A4(59)的值为$60(96)

如何发送数据呢:

A机器与B机器(红外都已打开)

A机器像A3写入255,此时 A4值从$60变成了$61,表示有数据(原因是WQX的IrDa是2个,一输入一输出,在机器上挨的近,在数据发送出去的同时,也接受到自己发送的数据)

B机器的A3变成了255,A4变成了$61,但此处指的255意思是CPU从地址A3读出的值为255,A3并不是普通的内存,是IO端口,硬件的设置就这样,CPU从A3读出值后,A3的值就变化了,CPU不访问A3的话A3的值就不变

如果A机器向A3写入了01在写02 在写03,那么,B机器读取第1次值为01,第2次为02,第3次为03,而后A4的值变回$60,表示"红外缓存"已经没有数据了(但似乎缓存有限,好象也有时间限制)

如希望将$0a $0b $0c $0d $0e $0f 发送到B机器上,那么

在确认A机器与B机器红外连接完好的情况下

A发送$0a到B,B在确定$A4值变为$61时,读取A3的值,同时A4自动变回了$60

B机器在发送一具有特殊代表的数据到$A3,A机器接受到,确认数据已经传送,继续传送下一个

由于红外有类似缓存的东西,所以传输起来非常快,不必像写nand那样需要delay时间

基本上数据就是这样传输的

虽然知道"打开红外"的中断,但却怎么也不知道"关闭红外"的中断,晕!!!

此中断与io端口通用与NC2000A/C NC2600C  不能使用于除此3型号外任何型号

BASIC代码是个简单的红外聊天程序,可以n台机器以上聊,由于不想做的太复杂和提高速度,有传输字节最高20的限制并且2人以上聊天的话,万一2人同时在传输数据可能将2人的数据都掺在了一起再成A说AAAAA  B说BBBBB显示出来的确是ABABA

经过测试2机器摆在一起程90度仍可以传输,并且用放小镜子(反光的凹面镜将15Cm到了45CM(差不多)),可以考虑使用光纤作为红外传输媒体(配合球面镜),本人并没实验过双机线,不知串口如何使用

未来BASIC游戏必将是非常侧重与汇编、批量法、多人游戏、型号通用的。所以......大家应该多研究这些对BASIC有很大用途的东西,不要只弄BASIC,也学点汇编,了解些系统中断与工作原理(至少我不精通)

PS:红外传输时没有特定对象,比如说3台机器,1台机器的红外对着另两台发,那么那两台会同时受到信息

错别字很多,不好意思
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2025-6-16 01:57 , Processed in 0.016428 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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