python - 将传感器值从Beaglebone Black发送到Windows上的套接字服务器

标签 python sockets beagleboneblack

我的Beaglebone Black上有一个python TCP socket客户端代码,该代码从传感器读取数据并将其发送到服务器。我的服务器在Windows中的Visual Studio中,并且是用C#编写的。使用Putty通过SSH连接的Beaglebone Black和Windows PC。问题在于服务器和客户端看不到对方。但是,当我使用Ubuntu PC(用python编写的服务器)而不是Windows时,一切正常。

您能帮我建立连接吗?我认为问题出在服务器端。

P.S.由于将来的计划,服务器必须用C#编写。

这是我的C#服务器代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace Server_Tutorial
{
    class Program
    {
        static void Main(string[] args)
        {
            IPAddress ip = Dns.GetHostEntry("192.168.7.1").AddressList[0];
            TcpListener server = new TcpListener(ip, 7000);
            TcpClient client = default(TcpClient);

            try
            {
                server.Start();
                Console.WriteLine("Server started...");
                Console.Read();
            } catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.Read();
            }

            while (true)
            {
                client = server.AcceptTcpClient();

                byte[] receivedBuffer = new byte[100];
                NetworkStream stream = client.GetStream();


                stream.Read(receivedBuffer, 0, receivedBuffer.Length);

                StringBuilder msg = new StringBuilder();

                foreach (byte b in receivedBuffer)
                {
                    if (b.Equals(00))
                    {
                        break;
                    }
                    else
                    {
                        msg.Append(Convert.ToChar(b).ToString());
                    }
                }

                Console.WriteLine(msg.ToString() + msg.Length);
            }
        }
    }
}

这是python中的客户端代码:
import Adafruit_BBIO.ADC as ADC
import time
import socket
import sys

serverAddr = ('192.168.7.1', 7000)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(serverAddr)

fsr = 'P9_40'

ADC.setup()

while True:
        reading = ADC.read(fsr)*1000
        reading = int(round(reading))
        client.send(str(reading))

client.close()

这是适用于Ubuntu的python中的服务器代码:
import socket
import sys

HOST = ''
PORT = 7000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')

try:
        s.bind((HOST, PORT))
except socket.error as msg:
        print('Bind failed. ')
        sys.exit()

print('Socket bind complete')

s.listen(10)
print('Socket now listening')

conn, addr = s.accept()
print('Connected to ' + addr[0] + ':' + str(addr[1]))

while True:
        data = conn.recv(1024)
        line = data.decode('UTF-8')    # convert to string (Python 3 only)
        line = line.replace("\n","")   # remove newline character
        print( line )

s.close()

最佳答案

您是否尝试过运行:netstat -a -b
在您的PC上?

如果表明您的端口7000已被另一个TCP连接使用,则可以简单地切换到port 8080或您希望成功连接的另一个端口。

关于python - 将传感器值从Beaglebone Black发送到Windows上的套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53830400/

相关文章:

javascript - Python 使用多个键对 JSON 对象进行分组

python - Django 1.9。模板继承。 block 不显示

c - Beagle 骨 ADC 读取值

linux - Yocto 为 preempt_rt 构建

python - 如何将我的 csv 文件转换为这个 scikit learn 数据集

java - java套接字连接中客户端和服务器之间数据传输不成功

java - HTML5 Websocket 错误

objective-c - CFSocketSetAddress 失败

debian - 启用 BeagleBone 上的所有 GPIO 引脚,包括 eMMC 引脚

python - contourf() 在有限数据上绘制空白区域