搜索
bottom↓
回复: 56

[新手]求 用C51实现两台电脑之间USB通信的思路

[复制链接]

出0入0汤圆

发表于 2015-3-14 10:43:00 | 显示全部楼层 |阅读模式
已有材料:一条USB公对公的线,两台电脑A,B
实现功能:用C51分别在两台电脑上实现一个客户端,在A上输入一个字符,在B电脑上可以接收,反之亦可。
楼主基础:自己在电路板上实现过跑马灯。

PS:之所以选用USB线,是因为本实验纯属练手之用,并非为了实现通信的功能。

求思路,求拍醒~


阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-3-14 10:56:40 | 显示全部楼层
电脑的USB都是主,USB通讯要一主一客,你这个从硬件和协议上就不行

出0入0汤圆

 楼主| 发表于 2015-3-14 11:03:21 | 显示全部楼层
zhoujustin108 发表于 2015-3-14 10:56
电脑的USB都是主,USB通讯要一主一客,你这个从硬件和协议上就不行

硬件上?不是一根公对公的线正好能把两台电脑连接起来么?Orz

至于协议上,不知道具体是什么意思?

anyway,依你之见,该怎样才能利用USB接口实现两台电脑的通信呢?

出0入8汤圆

发表于 2015-3-14 11:07:08 来自手机 | 显示全部楼层
你的意思是直接用usb线连接两台电脑,想通过c51编程序实现通讯?这不可能。

出0入8汤圆

发表于 2015-3-14 11:08:45 来自手机 | 显示全部楼层
普通电脑是普通的usb2.0吧? 没用otg功能。不能直接通讯。

出0入0汤圆

 楼主| 发表于 2015-3-14 11:09:04 | 显示全部楼层
tongdayusu 发表于 2015-3-14 11:07
你的意思是直接用usb线连接两台电脑,想通过c51编程序实现通讯?这不可能。 ...

对的,就是这个意思。

Question1:为什么不可能呢?

Question2:要怎样才能有可能呢?

出0入0汤圆

发表于 2015-3-14 11:10:18 | 显示全部楼层
用串口吧    USB有他的协议

出0入0汤圆

 楼主| 发表于 2015-3-14 11:14:13 | 显示全部楼层
carollim 发表于 2015-3-14 11:10
用串口吧    USB有他的协议

1、可怜楼主电脑上没有RS232哎~
2、就想熟悉一下USB,USB2.0或者USB3.0均可~

出0入0汤圆

发表于 2015-3-14 11:15:24 | 显示全部楼层
USB转串口

出0入0汤圆

 楼主| 发表于 2015-3-14 11:15:41 | 显示全部楼层
tongdayusu 发表于 2015-3-14 11:08
普通电脑是普通的usb2.0吧? 没用otg功能。不能直接通讯。

USB3.0呢?

出0入0汤圆

发表于 2015-3-14 11:17:58 | 显示全部楼层
电脑A 《=》USB 《=》232《=》USB 《=》电脑B

出0入0汤圆

 楼主| 发表于 2015-3-14 11:19:07 | 显示全部楼层

Good idea! 如果实在行不通,我会考虑你的建议的~感谢carollim

但作死的楼主还是想再多了解一下,我的idea是否确实是不行的。

出0入442汤圆

发表于 2015-3-14 11:55:30 | 显示全部楼层
野狼王 发表于 2015-3-14 11:19
Good idea! 如果实在行不通,我会考虑你的建议的~感谢carollim

但作死的楼主还是想再多了解一 ...

涉及到USB协议,你自己看协议去。用两个USB DEVICE互通是没问题的,需要自己写接口。

出0入0汤圆

 楼主| 发表于 2015-3-14 12:16:30 | 显示全部楼层
wye11083 发表于 2015-3-14 11:55
涉及到USB协议,你自己看协议去。用两个USB DEVICE互通是没问题的,需要自己写接口。 ...

啊西!

这就是我想要的答案!

感谢~

出0入84汤圆

发表于 2015-3-14 12:17:17 | 显示全部楼层
usb->单片机串口->USB

出0入0汤圆

 楼主| 发表于 2015-3-14 12:18:43 | 显示全部楼层
czzhouyun 发表于 2015-3-14 12:17
usb->单片机串口->USB

尽量不进行转接。

出0入0汤圆

发表于 2015-3-14 12:50:53 | 显示全部楼层
理论上能实现,不过串口好好的不用,为什么化简为难呢

出0入0汤圆

 楼主| 发表于 2015-3-14 13:50:00 | 显示全部楼层
谢冲 发表于 2015-3-14 12:50
理论上能实现,不过串口好好的不用,为什么化简为难呢

谢谢回复,我是纯属练习

出0入0汤圆

发表于 2015-3-14 13:54:14 | 显示全部楼层
PL2303转换芯片

出0入0汤圆

发表于 2015-3-14 14:25:02 | 显示全部楼层
本帖最后由 rmdyj 于 2015-3-14 14:26 编辑

实在不行,可以搞两个USB转串口,把这两个USB转串口的 RX \TX 交换对接,就可以实现LZ的想法,用FT232,波特率可以1MBPS.

出0入0汤圆

发表于 2015-3-14 22:42:28 | 显示全部楼层
c51写上位机usb程序,这个真沒听过

出0入0汤圆

发表于 2015-3-15 00:37:09 | 显示全部楼层
2楼精辟,一语道破天机

出0入0汤圆

发表于 2015-3-15 08:40:34 来自手机 | 显示全部楼层
太牛逼  51敢连usb的水平想上usb3

出0入0汤圆

发表于 2015-3-15 08:59:28 | 显示全部楼层
用网线啊

出0入8汤圆

发表于 2015-3-15 09:00:51 来自手机 | 显示全部楼层
直接用以太网连接路由器

出0入0汤圆

 楼主| 发表于 2015-3-15 18:49:06 | 显示全部楼层
谢冲 发表于 2015-3-14 12:50
理论上能实现,不过串口好好的不用,为什么化简为难呢

纯属了解技术,练习用的,其实是老师的作业-->楼主是学软件的,结果对硬件的课程感觉甚是费解。

我试试去查一下USB的通信协议。

出0入0汤圆

 楼主| 发表于 2015-3-15 18:50:15 | 显示全部楼层

这是啥子呦,容楼主先躲角落里去恶补一番

出0入0汤圆

 楼主| 发表于 2015-3-15 18:51:28 | 显示全部楼层
rmdyj 发表于 2015-3-14 14:25
实在不行,可以搞两个USB转串口,把这两个USB转串口的 RX \TX 交换对接,就可以实现LZ的想法,用FT232,波 ...

好有道理的样子,容楼主试试再回来做评论~

出0入0汤圆

 楼主| 发表于 2015-3-15 18:53:09 | 显示全部楼层
kafeiwutang 发表于 2015-3-14 22:42
c51写上位机usb程序,这个真沒听过

层主的头像辣么萌,这个真没见过。

谢谢关注撒~

出0入0汤圆

 楼主| 发表于 2015-3-15 18:54:37 | 显示全部楼层

就想试试行不行,不仅仅是为了实现功能的

出0入0汤圆

 楼主| 发表于 2015-3-15 20:14:22 | 显示全部楼层
mkliop 发表于 2015-3-15 09:00
直接用以太网连接路由器

不是为了实现功能的呢,就是想试试行不行的通,楼主学生党,奈何老师爱折腾的呢~

出0入0汤圆

发表于 2015-3-16 06:39:27 来自手机 | 显示全部楼层
如果你的cpu是51单片机的话,用c51还有可能。
x86,你用c51。
你老师让你这么折腾滴?可以休了他么。

出0入93汤圆

发表于 2015-3-16 07:05:58 | 显示全部楼层
野狼王 发表于 2015-3-15 20:14
不是为了实现功能的呢,就是想试试行不行的通,楼主学生党,奈何老师爱折腾的呢~

...

首先,USB协议规定在同一网络中不允许多个HOST的,当然有桥接器可以实现,两头都可以插PC,价格嘛,向你老师申请经费吧,大约也就几千美金一个。
USB转TTL的,明显速度上不去。最快的我也只见过号称最烂的PL2303,6Mbps。而且局限了只能虚拟串口。

出0入0汤圆

发表于 2015-3-16 07:31:38 来自手机 | 显示全部楼层
你这样转接需要一个有两个usb device口的器件才行。STM32好像用。8051就别想了

出0入0汤圆

发表于 2015-3-16 08:19:03 | 显示全部楼层

2000年的时候,就使用过这样的成品的“线”,,,,,只是两端都要安装一个驱动、使用专用的软件传输

出0入0汤圆

发表于 2015-3-16 08:23:39 | 显示全部楼层
11楼正解
使用单片机和USB芯片来,自己定义HID设备,自己写上位机,不过只是跑过跑马灯,还有一段距离的路得走啊

出0入0汤圆

发表于 2015-3-16 08:34:28 | 显示全部楼层
楼主太看得起51单片机了

出0入0汤圆

 楼主| 发表于 2015-3-16 08:40:12 | 显示全部楼层
labtech 发表于 2015-3-16 06:39
如果你的cpu是51单片机的话,用c51还有可能。
x86,你用c51。
你老师让你这么折腾滴?可以休了他么。 ...

老师的意思最后要实现传送文件的功能,从他的语气感觉这对学硬件的学生来说应该是不太难的

不一定非得用51,据他估计最后驱动+文件系统应该在500行代码之内。

你看这有戏么?

出0入93汤圆

发表于 2015-3-16 09:17:16 | 显示全部楼层
野狼王 发表于 2015-3-16 08:40
老师的意思最后要实现传送文件的功能,从他的语气感觉这对学硬件的学生来说应该是不太难的

不一定非得用 ...

这个就好弄了,用两个USB转TTL吧,然后TXD、RXD交叉,直接用超级终端的XModem、YModem、ZModem之类的发送接收文件就OK了,单片机根本就是不必要的,一句程序也不用写。为了完成任务,用单片机直接控制两个D+的上拉电阻,显得高大上一些。

出0入0汤圆

发表于 2015-3-16 09:44:01 来自手机 | 显示全部楼层
野狼王 发表于 2015-3-16 08:40
老师的意思最后要实现传送文件的功能,从他的语气感觉这对学硬件的学生来说应该是不太难的

不一定非得用 ...

51连硬USB控制器都没有。单51加两USB根本没戏!
如果用双USB控制器的STM32倒可以。不过怕是固件+驱动下不了6000行。
头像被屏蔽

出0入0汤圆

发表于 2015-3-16 12:27:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2015-3-17 18:08:06 | 显示全部楼层
各位说的方法我都去查查看是否可行,回头再回复大家,非常感谢你们的关注~

交差之后我会尽量回来写Blog的~

出0入0汤圆

发表于 2015-3-29 16:52:22 来自手机 | 显示全部楼层
楼主学软件的,可以想办法改写驱动底层,把一台电脑写成设备就行了,在平板上有这样做的

出0入0汤圆

发表于 2015-3-29 22:57:05 来自手机 | 显示全部楼层
我只知道网上买有usb对拷的线,中间有个小显示屏。具体我没看,是看电影时候广告推送的

出0入0汤圆

发表于 2015-4-7 10:51:58 | 显示全部楼层
USB转TTL,多串口单片机,这样是不是很容易,但总感觉浪费资源了

出0入0汤圆

 楼主| 发表于 2015-4-7 20:01:50 | 显示全部楼层
logsoft 发表于 2015-3-29 16:52
楼主学软件的,可以想办法改写驱动底层,把一台电脑写成设备就行了,在平板上有这样做的 ...

我确实就是学软件的,表示对硬件的设计毫无概念啊!
能麻烦再说的明白点么?

要是按照你说的这样,大概需要多少行代码呢?是用C还是汇编呢?

出0入0汤圆

发表于 2015-4-7 20:10:18 | 显示全部楼层
莫非这老师有毛病。。。

出0入0汤圆

发表于 2015-4-7 21:29:34 | 显示全部楼层
这个老师简直有病

出0入0汤圆

 楼主| 发表于 2015-4-9 00:47:34 | 显示全部楼层
PIC16F54 发表于 2015-4-7 20:10
莫非这老师有毛病。。。

我是学软件的,只是有一门学习接口的课程,想来老师也是想要我们自学一些东西吧。
如果不用转接口的话(从老师的意思,似乎对我们来说,反倒是转接的话会更麻烦一些),直接就只有一根公对公的USB线,
要自己写代码么?具体用汇编写还是C语言呢?我应该从那些方面开始了解这个问题呢?

出0入93汤圆

发表于 2015-4-9 07:10:13 | 显示全部楼层
野狼王 发表于 2015-4-9 00:47
我是学软件的,只是有一门学习接口的课程,想来老师也是想要我们自学一些东西吧。
如果不用转接口的话( ...

这老师逆天了,不是有病而是病入膏肓了。
叫他自己看USB协议去,两个USB HOST直接相连这个课题要能完成,太阳都能绕地球转了。

出0入0汤圆

发表于 2015-4-9 21:13:30 | 显示全部楼层
大家说的很清楚了,USB设计的时候就是主从模型,从来没打算让两个主机直接通信的。

出0入0汤圆

发表于 2015-4-9 23:22:46 来自手机 | 显示全部楼层
otg是咋回事

出0入0汤圆

 楼主| 发表于 2015-4-10 11:10:42 | 显示全部楼层
takashiki 发表于 2015-4-9 07:10
这老师逆天了,不是有病而是病入膏肓了。
叫他自己看USB协议去,两个USB HOST直接相连这个课题要能完成, ...

有啥好法子,能委婉得绕过老师的错误,并且实现老师的功能(修改一下老师要求的条件,但是还是能让俩电脑进行通信)么?

作为一个只会用C++和Matlab写算法的计算机专业学生,实在不懂这些底层的问题哎~

出0入93汤圆

发表于 2015-4-10 11:25:13 | 显示全部楼层
野狼王 发表于 2015-4-10 11:10
有啥好法子,能委婉得绕过老师的错误,并且实现老师的功能(修改一下老师要求的条件,但是还是能让俩电脑 ...

买一条电脑USB对拷线,两头都是公的,完全满足你老师的要求,也不用要各种接口转来转去了。
单片机就随便从USB线上拉出VCC、GND点个灯交差得了。

出0入0汤圆

 楼主| 发表于 2015-4-10 12:56:36 | 显示全部楼层
takashiki 发表于 2015-4-10 11:25
买一条电脑USB对拷线,两头都是公的,完全满足你老师的要求,也不用要各种接口转来转去了。
单片机就随便 ...

感谢回复~

出0入0汤圆

发表于 2015-4-12 07:54:39 来自手机 | 显示全部楼层
nhztb 发表于 2015-4-9 23:22
otg是咋回事

OTG是复合设备。一个断点上同时有Host和Device,需要专用的控制器实现。

出0入0汤圆

 楼主| 发表于 2015-7-28 10:10:35 | 显示全部楼层
此贴暂时终结,楼主放弃了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-23 23:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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