## 指令介绍 ### 串口通信协议 Guition 是一种串口屏开发平台,通过串口与其他设备进行通信。以下是关于 Guition 串口屏通信协议的详细介绍: #### 通信方式 Guition 串口屏通过串口与主控设备进行通信,常见的串口通信方式包括 UART、RS232 和 RS485。 #### 数据格式 Guition 串口屏通信数据使用 JSON 格式进行传输,JSON 格式的数据具有良好的可读性和易于解析的特点,便于设备之间的数据交换和解析。 #### 使用详解 主控设备向 Guition 串口屏发送 JSON 格式的命令数据,Guition 串口屏接收到数据后解析并执行相应的操作。常见的命令包括显示文本、绘制图形、控制控件状态等。 以下是一个示例的 JSON 格式命令: ```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 串口屏通信的步骤说明: 1. **准备工作**: * 确保 Guition 串口屏已经连接到单片机的串口端口,并且电源正常供电。 * 在单片机上准备一个串口通信的程序,用于发送 JSON 格式的命令数据给 Guition 串口屏。 2. **编写调试程序**: * 在单片机上编写一个程序,通过串口向 Guition 串口屏发送命令数据。 * 可以编写一个简单的程序,发送显示文本的命令,以验证通信是否正常。 3. **发送命令数据**: * 在调试程序中,以 JSON 格式构建要发送的命令数据,包括命令名称和参数。 * 使用单片机的串口发送函数将命令数据发送给 Guition 串口屏。 4. **观察串口输出**: * 在调试过程中,通过单片机的串口调试功能或外部串口监视器,观察串口输出的情况。 * 可以查看串口输出是否正常,以及 Guition 串口屏是否正确执行了接收到的命令。 5. **调试和优化**: * 根据观察到的串口输出情况,调试和优化单片机程序。 * 可以逐步增加发送不同命令的功能,测试 Guition 串口屏的各种功能是否正常。 6. **反馈和修改**: * 根据调试结果,对 Guition 串口屏通信协议进行修改和优化。 * 如果发现通信存在问题,可以根据串口输出的反馈信息,调整命令数据格式或参数,以确保通信的稳定和可靠。 以下是一个使用 STM32 单片机调试 Guition 串口屏通信的简单示例代码: ```c #include "stm32f4xx_hal.h" #include #include // 定义串口句柄 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 串口屏的简单示例代码: ```c #include #include // 定义串口引脚 #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 串口屏。请注意,需要根据实际情况修改串口通信的波特率和引脚配置。