2021-01-14 增加ART-PI SPI屏驱动
调用MainTask.c中的MainTask();即可完成初始化
开发者使用时需自行更改Examples中MainTask.c中的下列参数
extern ULONG display_1_canvas_memory[512];
此处数组大小应与Studio生成的大小相同
uint8_t oled_canvas_memory[2048];
此处大小与上面数组大小相同 目的是为了存储转换扫描方式后的数据
实际所用屏幕可能和Studio中的界面扫描方式不同 (Studio中界面扫描方式为 从左到右,从上到下)
自行实现oled打点函数
void GuiDrawPoint(uint8_t x, uint8_t y, uint8_t color)
{
.....
}
在外部文件中自行实现下列函数
extern void lcd_address(uint8_t page, uint8_t column);
extern void transfer_data(uint8_t *data, uint8_t len);
使用GUIX Studio可打开GUIX Studio OLED Demo中的工程 GUIX Studio生成的文件需要替换Example文件夹中的同名文件才能生效
虚拟设备目前仅为128*128的单色设备
虚拟设备使用串口发送至上位机,开发者需要根据自身硬件选择波特率,若不使用DMA建议最大波特率设置成460800! 并用中断接收方式打开设备
rt_device_open(uart_device, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX);
static void rt_virtual_serial_init(char *name)
{
serial_sem = rt_sem_create("mono_sem", 0, RT_IPC_FLAG_FIFO);
uart_device = rt_device_find(name);
struct serial_configure use_config = {
BAUD_RATE_921600, /* 921600 bits/s */
DATA_BITS_8, /* 8 databits */
STOP_BITS_1, /* 1 stopbit */
PARITY_NONE, /* No parity */
BIT_ORDER_LSB, /* LSB first sent */
NRZ_NORMAL, /* Normal mode */
RT_SERIAL_RB_BUFSZ, /* Buffer size */
0};
rt_device_open(uart_device, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_DMA_RX | RT_DEVICE_FLAG_DMA_TX);
if (RT_EOK != rt_device_control(uart_device, RT_DEVICE_CTRL_CONFIG, (void *)&use_config))
{
rt_kprintf("uart config baud rate failed.\n");
}
rt_device_set_rx_indicate(uart_device, uart_input);
return;
}
![Virtual Display](./Virtual Display\Virtual Display.jpg)
1.上位机使用鼠标模拟按键操作 右上角显示为当前坐标和触摸状态。
2.上位机右上方三个按键已绑定数字键盘 ”1", 2“, "3",已实现长按短按。
用户在
guix_virtual_display_mono.c 文件中加入按键回调即可
static void key_cb(rt_uint8_t key, rt_uint8_t state)
{
switch (key)
{
case 1:
if (state)
{
/* 按键1长按 */
}
else
{
/* 按键1短按 */
}
break;
case 2:
if (state)
{
/* 按键2长按 */
}
else
{
/* 按键2短按 */
}
break;
case 3:
if (state)
{
/* 按键3长按 */
}
else
{
/* 按键3短按 */
}
break;
}
}