打印
[CAN-bus/DeviceNet]

SJA1000标准发送/接收实验C程序

[复制链接]
5585|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxj1952|  楼主 | 2007-2-13 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
其实SJA1000的发送/接收程序,不过是要求完成一个数组的拷贝。C51是处理对象的,何谓对象?数组是不是一个对象?因此发送程序应该写为:

        SJA1000_TXB对象A=用户发送数据对象B 

假定SJA1000地址在0x7f,发送/接收缓存在0x7f10。发送/接收ID=0x78e(RTR=0),用户发送数据在TXdata[11],用户接收数据在RXdata[11].

 uchar TXdata[11]={0x08,0x78,0xe0,0x33,0x34,0x35,0x36,0x37},RXdata[11];


我的发送程序:

void send()  

*(PA xdata *)0x7f10=*(PA *)TXdata;
can_write(CMR,0x01);
}


我的接收程序:
void receive(void)
{  
*(PA *)RXdata=*(PA xdata *)0x7f10;
can_write(CMR,0x04);
}

PA是在头文件中定义的数据类型,各位都想得到。“不是我们做不到,而是我们想不到”。




    

相关帖子

沙发
wxj1952|  楼主 | 2007-2-13 19:27 | 只看该作者

为什么我们做不到

今天买了一个SAMSUNG笔记本硬盘,用起来感觉确实真棒。逛了一下中关村,笔记本硬盘还有日立的,IBM的等等。遗憾的是没有中国的。从这么简单的一道程序,是不是可以看出,什么时候中国可以做出自己的硬盘。

使用特权

评论回复
板凳
zlgCAN| | 2007-2-14 15:11 | 只看该作者

作者的思考问题方法值得推荐。

使用特权

评论回复
地板
BitFu| | 2007-2-27 09:55 | 只看该作者

更多时习惯逐字节复制

使用特权

评论回复
5
wxj1952|  楼主 | 2007-2-27 13:41 | 只看该作者

那岂不是太轻视C语言发明大师/计算机网络OSI了

当然,当然。我以前更习惯单片机RS-232通信和汇编语言,逐字节传输,逐字节读取。

使用特权

评论回复
6
BitFu| | 2007-2-27 15:17 | 只看该作者

memcpy,memset都是C常用的函数

没法说哪个好哪个不好,取决于数据的组织和程序的结构设计.

使用特权

评论回复
7
wxj1952|  楼主 | 2007-2-28 09:44 | 只看该作者

分组/帧/包/SDU

两个函数好像还是按字节拷贝。关键是网络的层间通信是打好包PACKET的,是一个服务数据单元/协议数据单元,是一个“单元”。不到用户层拆包,是没有字节的概念的。即使CAN,也可能一个有效数据/对象是8/12/16/32/64位,无论什么它都是传过来一个帧数据单元。这时,在MAC层上按字节提取有意义?并没看到谁在for(i=0...)循环提取中间处理哪个字节数据,结果还是按分组提取,倒像是把C当汇编用了。

使用特权

评论回复
8
lyj3588| | 2011-12-5 19:39 | 只看该作者
怎么补详细点

使用特权

评论回复
9
xjbh001| | 2011-12-15 20:44 | 只看该作者
没有完整的程序啊

使用特权

评论回复
10
zhou320801| | 2012-6-30 13:31 | 只看该作者
mark

使用特权

评论回复
11
sky_2830| | 2012-11-6 17:38 | 只看该作者
:o就这。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

757

帖子

1

粉丝