您尚未登录。

楼主 # 2023-12-18 09:05:22

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

想用t113-s3做个设备,收集老化台上can设备总线的数据,存起来,或者定时发送给局域网的pc。
请教,该怎么实现呢?
同事建议嵌入式linux设备上开个ftp服务器,pc上位机定时读取文件。
问了下gpt,说是sockete通信,于是搜了下,这类似串口发送接受?

请大家给点意见,怎么搞才好?

离线

楼主 #2 2023-12-18 09:44:58

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

Meekdai 说:

PC上位机起一个socketserver,t113上起一个socketclient就可以,使用起来确实和串口很像,但是速率和稳定性要比串口好不少的。

那么,再请教下,socket通讯的话,需要pc和嵌入式linux互相知道对方的局域网地址吧,这个需要手动输入了吧?有没有简单的办法判别?实际应用中是一个PC,和多个嵌入式linux设备进行局域网通讯。

离线

楼主 #4 2023-12-18 10:05:36

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

山羊胡子 说:

不写代码,直接mount pc的共享文件夹,往里面存文件

感觉一次性写入的话,可以考虑。但是如果想每隔几十秒传一次数据呢?

离线

楼主 #6 2023-12-18 13:41:20

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

Meekdai 说:

@Gentlepig
不需要知道,只要PC和多个嵌入式设备都在同一网段就行了。比如server为[192.168.1.10],client为[192.168.1.55]和[192.168.1.86]等等,这样一般服务器起来后,client会自动连接到server

https://blog.csdn.net/weixin_45062087/article/details/118946561
对于APUE网络socket,我们需要了解就是server和client之间的通信建立过程。首先我们需要知道两台不同网段的pc是怎么通信的,当一台pc通过应用程序发一段消息过来给另一台pc时,pc获取到数据包之后就行拆包解析,这些都是操作系统内核的工作,对于server而言,需要告诉内核使用什么ip和端口来建立起服务,当有client接入时,内核先进行解析,得到client的ip和访问端口之后再给server(对应的应用程序),最后完成通信建立;对于client而言,需要知道server的ip和端口,获取ip来源主要是通过dns解析和人为获取,然后通过获取的ip和端口进行发送连接请求,最后完成通信。

我搜到的这个文章,我的理解是client连接server,需要知道对方地址。

最近编辑记录 Gentlepig (2023-12-18 13:43:36)

离线

楼主 #8 2023-12-18 14:52:25

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

@Meekdai
感谢。
意思是,client把局域网所有ip都列出来,然后挨个去尝试连接?

离线

楼主 #10 2023-12-19 08:48:18

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

kin 说:
Gentlepig 说:

@Meekdai
感谢。
意思是,client把局域网所有ip都列出来,然后挨个去尝试连接?

client先在局域网发一个UDP广播包,server收到后直接应答回去,这时client就拿到server的ip地址了,就可以与server建立连接

感谢。

离线

楼主 #11 2023-12-29 15:50:31

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

再请教下各位,目前通过udp广播,可以获取tcp server的地址了。然后通过tcp client连接tcp server后,可以互发数据。但有个新问题了,tcpsocket传输文件时,接收方不知道什么时候文件传输结束了,这该怎么解决好呢?
网上搜了下,简单的解决办法是,发送方,先发送4个字节表明接下来文件的长度,然后再发文件。
还有朋友说用http通讯。

该怎么解决这个问题好呢?

离线

楼主 #13 2024-01-01 18:13:01

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

踩姑娘的小蘑菇 说:

@Gentlepig
传文件没有必要造轮子,直接用ftp就好,主机装一个ftp server,从机连接并使用ftp上传文件
或者使用ssh承载的sftp也可以

想定时传json数据,也许十秒就传一次。
FTP一半是传文件吧?我10秒传一个文件,ftp服务器收到后删除文件?

另http方式怎么样?

离线

楼主 #21 2024-01-12 17:02:29

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

目前的实现是,嵌入式linux上电后发送下udp广播,表明自己是tcp client,pc收到后自动返回udp信息,表明自己是tcp server,此时双方都知道了对方的ip地址。然后就开始tcp连接。当嵌入式板发现tcp断开时,启动个定时器,定时再发送udp广播信息。

但又遇到了个问题,现场最后是一台pc多个嵌入式linux设备,如何区分这几个嵌入式linux设备呢?
pc端可以用ip地址来区分,但是实际嵌入式设备是哪个地址,可能不好看出来。
想实现的是,设备区分为 01, 02, 03....这样的若干个设备。
但是,这样问题就又来了,如何配置设备的名称?

之前这么实现过,pc向t113-s3的usb的虚拟串口,发送个固定格式的数据,t113-s3这里,写个串口接收处理程序,将收到的数据存为一个配置文件。

不过觉得也不是很方便,t113-s3的usb口一般用来烧录程序,或adb push文件。

有什么更好的办法吗?求推荐。

最近编辑记录 Gentlepig (2024-01-12 17:03:38)

离线

楼主 #23 2024-01-17 14:04:24

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,局域网内,嵌入式llinxu设备,如何向pc上位机传送数据?

@wxws

感谢分享经验,目前我是在设备系统目录里放了个json文件,里变有个描述设备名称的字符串。

最近编辑记录 Gentlepig (2024-01-17 14:04:37)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn