树莓派4B和阿里云服务器进行通信

题记:好记性不如烂笔头,留下笔记,方便下次自己查看学习(这篇 blog暂时没有更新完毕)

目录

演示

在树莓派这边发送:我是树莓派
在这里插入图片描述
云服务器这边接受:
在这里插入图片描述

代码

树莓派端:

import socket
import sys
def sock_client_data():
    while True:
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect(('公网IP', 60000)) #60000是我选择的端口 
        except socket.error as msg:
            print(msg)
            print(sys.exit(1))
        data = input("input data:")   #输入要传输的数据
        s.send(data.encode())  #将要传输的数据编码发送,如果是字符数据就必须要编码发送
        s.close()
if __name__ == '__main__':
    sock_client_data()

服务器端代码:

# -*- coding: utf-8 -*-
import socket
import sys
def socket_service_data():
    name = socket.gethostname()
    HOST = socket.gethostbyname(name)  # 获取阿里云服务器私网IP,使用ifconfig可查询
    PORT = 60000 #安全组中设置
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.bind((HOST, PORT))  #在不同主机或者同一主机的不同系统下使用实际ip
        s.listen(10)
    except socket.error as msg:
        print(msg)
        sys.exit(1)

    print("Wait for Connection..................")

    while True:
        sock, addr = s.accept()
        buf = sock.recv(1024)  #接收数据
        buf = buf.decode()  #解码
        print("The data from " + str(addr[0]) + " is " + str(buf))
        print("Successfully")
        # return buf
        sock.close()
if __name__ == '__main__':
    socket_service_data()
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
树莓派4B和STM32之间进行串口通信时,需要使用GPIO引脚以及相应的代码进行连接和配置。下面是一个示例代码,演示了如何在树莓派4B和STM32之间进行串口通信。 在树莓派4B上的代码(Python): ```python import serial # 创建串口对象 ser = serial.Serial('/dev/ttyS0', 115200) # '/dev/ttyS0'为树莓派4B上的默认串口,波特率为115200 # 向STM32发送数据 ser.write(b'Hello STM32!') # 从STM32接收数据 data = ser.readline() print(data) # 关闭串口连接 ser.close() ``` 在STM32上的代码(C语言): ```c #include "stm32f4xx.h" // 配置串口 void USART2_Init(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; // 配置GPIO引脚 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStruct); // 配置USART2 USART_InitStruct.USART_BaudRate = 115200; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &USART_InitStruct); // 启用USART2 USART_Cmd(USART2, ENABLE); } // 发送数据到树莓派 void sendToRaspberryPi(const uint8_t* data, uint32_t length) { for (uint32_t i = 0; i < length; i++) { while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); USART_SendData(USART2, data[i]); } } // 接收树莓派发送的数据 uint8_t receiveFromRaspberryPi(void) { while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET); return (uint8_t)USART_ReceiveData(USART2); } int main(void) { USART2_Init(); // 接收树莓派发送的数据并回传 while (1) { uint8_t data = receiveFromRaspberryPi(); sendToRaspberryPi(&data, 1); } } ``` 需要注意的是,在树莓派4B上,使用的是/dev/ttyS0作为默认串口设备。在STM32上,需要根据硬件连接情况和引脚配置进行相应的修改。以上代码仅供参考,具体的串口连接方式和代码实现可能会因硬件和需求的不同而有所差异。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值