树莓派上使用socket套接口使用TCP协议传输数据

#import necessary package
import socket
import time
#import sys
import RPi.GPIO as GPIO

HOST_IP = "192.168.1.170"    #define host ip: Rpi's IP
HOST_PORT = 8888
print("Starting socket: TCP...")

socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    #1.create socket object:socket=socket.socket(family,type)
print("TCP server listen @ %s:%d!" %(HOST_IP, HOST_PORT) )
host_addr = (HOST_IP, HOST_PORT)
#2.bind socket to addr:socket.bind(address)
socket_tcp.bind(host_addr)
#3.listen connection request:socket.listen(backlog)
socket_tcp.listen(1)
#4.waite for client:connection,address=socket.accept()
socket_con, (client_ip, client_port) = socket_tcp.accept()
print("Connection accepted from %s." %client_ip)
a ="Welcome to RPi TCP server!"
socket_con.send(a.encode())
#5.handle
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
GPIO.setup(27,GPIO.OUT)
GPIO.setup(22,GPIO.OUT)
GPIO.setup(18,GPIO.OUT,initial=False)
duo = GPIO.PWM(18,300)
p1 = GPIO.PWM(17,10000)
p2 = GPIO.PWM(27,10000)
en = GPIO.output(22,False)
p1.start(0)
p2.start(0)
duo.start(0)
print("Receiving package...")
def forward(a):
    k=a/100
    print("k=%lf"%k)
    p1.ChangeDutyCycle(k)
    p2.ChangeDutyCycle(0)
def back(a):
    k=a/100
    print("k1=%lf"%k)
    p1.ChangeDutyCycle(0)
    p2.ChangeDutyCycle(k)
def lr(a):
    duo.ChangeDutyCycle(a) #左满舵a=32,右满舵a=52,中值a=42,则a值取32至52
def stop():
    p1.ChangeDutyCycle(0)
    p2.ChangeDutyCycle(0)
    duo.ChangeDutyCycle(42)
while True:
    data=socket_con.recv(1024).decode()
    print("Received:%s"%data)
            #p1.ChangeDutyCycle(int(data))
    ver, value = data.split(':')
    print("this is ver:%s"%ver)
    print("this is value:%d"%int(value))
    if ver == 'L':
        lr(int(value))
    elif ver == 'R':
        lr(int(value))
    elif ver == 'F':
        forward(float(value))
    elif ver == 'B':
        back(float(value))
    socket_con.send(data.encode())
    time.sleep(0.05)
socket_tcp.close()
#sys.exit(1)
GPIO.cleanup()

同时奉上我的github上的一个更为完整版的小车与电脑通过TCP协议交流控制的代码:https://github.com/wadeKeith/raspberry-socket-car/tree/master

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值