指令介绍
串口通信协议
Guition 是一种串口屏开发平台,通过串口与其他设备进行通信。以下是关于 Guition 串口屏通信协议的详细介绍:
通信方式
Guition 串口屏通过串口与主控设备进行通信,常见的串口通信方式包括 UART、RS232 和 RS485。
数据格式
Guition 串口屏通信数据使用 JSON 格式进行传输,JSON 格式的数据具有良好的可读性和易于解析的特点,便于设备之间的数据交换和解析。
使用详解
主控设备向 Guition 串口屏发送 JSON 格式的命令数据,Guition 串口屏接收到数据后解析并执行相应的操作。常见的命令包括显示文本、绘制图形、控制控件状态等。
以下是一个示例的 JSON 格式命令:
{
"command": "display_text",
"params": {
"txt": "Hello, World!",
"pos": [100, 50],
"font": 16,
"color": "#"
}
}
参数说明
command
: 命令名称,表示要执行的操作,如显示文本、绘制图形等。params
: 参数对象,包含命令所需的具体参数。text
: 要显示的文本内容。pos
: 文本显示的位置,以屏幕左上角为原点,用{x, y}
表示坐标。font
: 文本的字体大小。color
: 文本的颜色。
更详细的数据格式和参数说明可参考 Guition 的控件详解文档,以获取每个控件支持的命令和参数列表。
Guition 串口屏通信协议使用 JSON 格式进行数据交换,简单易懂,便于开发人员进行使用和调试。
使用单片机调试 Guition 串口屏通信
Guition 串口屏是一种通过串口与其他设备进行通信的显示设备,为了保证串口通信的正常进行,可以通过单片机进行调试。以下是使用单片机调试 Guition 串口屏通信的步骤说明:
准备工作:
确保 Guition 串口屏已经连接到单片机的串口端口,并且电源正常供电。
在单片机上准备一个串口通信的程序,用于发送 JSON 格式的命令数据给 Guition 串口屏。
编写调试程序:
在单片机上编写一个程序,通过串口向 Guition 串口屏发送命令数据。
可以编写一个简单的程序,发送显示文本的命令,以验证通信是否正常。
发送命令数据:
在调试程序中,以 JSON 格式构建要发送的命令数据,包括命令名称和参数。
使用单片机的串口发送函数将命令数据发送给 Guition 串口屏。
观察串口输出:
在调试过程中,通过单片机的串口调试功能或外部串口监视器,观察串口输出的情况。
可以查看串口输出是否正常,以及 Guition 串口屏是否正确执行了接收到的命令。
调试和优化:
根据观察到的串口输出情况,调试和优化单片机程序。
可以逐步增加发送不同命令的功能,测试 Guition 串口屏的各种功能是否正常。
反馈和修改:
根据调试结果,对 Guition 串口屏通信协议进行修改和优化。
如果发现通信存在问题,可以根据串口输出的反馈信息,调整命令数据格式或参数,以确保通信的稳定和可靠。
以下是一个使用 STM32 单片机调试 Guition 串口屏通信的简单示例代码:
#include "stm32f4xx_hal.h"
#include <stdio.h>
#include <string.h>
// 定义串口句柄
UART_HandleTypeDef huart2;
// Guition 串口屏通信命令,具体指令请以指令示例中为准
char command[] = "{\"command\": \"display_text\", \"params\": {\"text\": \"Hello, STM32!\", \"position\": {\"x\": 100, \"y\": 50}, \"font_size\": 16, \"color\": \"red\"}}#\n";
// 函数原型
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
int main(void)
{
// 初始化 HAL 库
HAL_Init();
// 配置系统时钟
SystemClock_Config();
// 初始化所有的硬件资源
MX_GPIO_Init();
MX_USART2_UART_Init();
// 发送 Guition 串口屏通信命令
HAL_UART_Transmit(&huart2, (uint8_t *)command, strlen(command), HAL_MAX_DELAY);
while (1)
{
}
}
// 配置系统时钟
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
Error_Handler();
}
}
// 初始化 GPIO
static void MX_GPIO_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
}
// 初始化 USART2
static void MX_USART2_UART_Init(void)
{
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart2) != HAL_OK)
{
Error_Handler();
}
}
这个示例代码通过 STM32F4 单片机的 USART2 模块与 Guition 串口屏进行通信。在 main()
函数中,发送了一个显示文本的命令给 Guition 串口屏。请注意,需要根据实际情况修改串口通信的波特率和 GPIO 引脚配置。
以下是一个使用 Arduino 单片机控制 Guition 串口屏的简单示例代码:
#include <Arduino.h>
#include <SoftwareSerial.h>
// 定义串口引脚
#define RX_PIN 10
#define TX_PIN 11
// 创建软串口对象
SoftwareSerial mySerial(RX_PIN, TX_PIN);
// Guition 串口屏通信命令,具体指令请以指令示例中为准
String command = "{\"command\": \"display_text\", \"params\": {\"text\": \"Hello, Arduino!\", \"position\": {\"x\": 100, \"y\": 50}, \"font_size\": 16, \"color\": \"red\"}}\n";
void setup() {
// 初始化串口
Serial.begin(9600);
mySerial.begin(9600);
// 等待串口初始化完成
delay(100);
// 发送 Guition 串口屏通信命令
mySerial.print(command);
}
void loop() {
// 主程序循环
}
这个示例代码通过 Arduino 的软串口库与 Guition 串口屏进行通信。在 setup()
函数中,发送了一个显示文本的命令给 Guition 串口屏。请注意,需要根据实际情况修改串口通信的波特率和引脚配置。