当前位置:网站首页>[luatos-air551g] 6.2 repair: restart caused by line drawing
[luatos-air551g] 6.2 repair: restart caused by line drawing
2022-07-06 08:17:00 【Birds hate fish】
Preface
Solve the problem of drawing the starting and ending points of lines x or y If the coordinates are the same, there will be a restart problem .
problem
[2022-02-12 15:21:18.439] I/user.74 23 69 23
[2022-02-12 15:21:18.455] Guru Meditation Error: Core 0 panic'ed (Store access fault). Exception was unhandled.
[2022-02-12 15:28:01.448] I/user.68 64 64 64
[2022-02-12 15:28:01.448] Guru Meditation Error: Core 0 panic'ed (Store access fault). Exception was unhandled.
[2022-02-12 15:30:12.171] I/user.64 64 58 64
[2022-02-12 15:30:12.202] Guru Meditation Error: Core 0 panic'ed (Store access fault). Exception was unhandled.
When using lcd.drawline() when , If you enter the coordinates x perhaps y identical , Will cause a restart , I don't know how to solve this at present
solve
lcd.drawLine(64,64,59,64,0xf000) Unable to run
lcd.drawLine(59,64,64,64,0xf000) Can run
It seems to be the same x Or the same y It can only be from the point with small coordinate value to the point with large coordinate value .
Just add a function to exchange the positions of two points
-- Used when lcd When drawing lines , The horizontal and vertical coordinates are the same, from small points to large points
function judge_lcd_xy_same(x1,y1,x2,y2)
if x1 == x2 then
if y1>y2 then
temp = y1
y1 = y2
y2 = temp
end
end
if y1 == y2 then
if x1>x2 then
temp = x1
x1 = x2
x2 = temp
end
end
return x1,y1,x2,y2
end
Source code
int luat_lcd_draw_line(luat_lcd_conf_t* conf,uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2,uint32_t color){
uint16_t t;
uint32_t i = 0;
int xerr = 0, yerr = 0, delta_x, delta_y, distance;
int incx, incy, row, col;
if (x1 == x2 || y1 == y2)
{
/* fast draw transverse line */
luat_lcd_set_address(conf,x1, y1, x2, y2);
size_t dots = (x2 - x1 + 1) * (y2 - y1 + 1);// Number of points
uint8_t* line_buf = (uint8_t*)luat_heap_malloc(dots * 2);
for (i = 0; i < dots; i++)
{
line_buf[2 * i] = color >> 8;
line_buf[2 * i + 1] = color;
}
luat_gpio_set(conf->pin_dc, Luat_GPIO_HIGH);
if (conf->port == LUAT_LCD_SPI_DEVICE){
luat_spi_device_send((luat_spi_device_t*)(conf->userdata), (const char*)line_buf, dots * 2);
}else{
luat_spi_send(conf->port, (const char*)line_buf, dots * 2);
}
luat_heap_free(line_buf);
return 0;
}
delta_x = x2 - x1;
delta_y = y2 - y1;
row = x1;
col = y1;
if (delta_x > 0)incx = 1;
else if (delta_x == 0)incx = 0;
else
{
incx = -1;
delta_x = -delta_x;
}
if (delta_y > 0)incy = 1;
else if (delta_y == 0)incy = 0;
else
{
incy = -1;
delta_y = -delta_y;
}
if (delta_x > delta_y)distance = delta_x;
else distance = delta_y;
for (t = 0; t <= distance + 1; t++)
{
luat_lcd_draw_point(conf,row, col,color);
xerr += delta_x ;
yerr += delta_y ;
if (xerr > distance)
{
xerr -= distance;
row += incx;
}
if (yerr > distance)
{
yerr -= distance;
col += incy;
}
}
return 0;
}
边栏推荐
- 灰度升级 TiDB Operator
- [research materials] 2021 live broadcast annual data report of e-commerce - Download attached
- leetcode刷题 (5.29) 哈希表
- [research materials] 2022 enterprise wechat Ecosystem Research Report - Download attached
- [redis] Introduction to NoSQL database and redis
- [research materials] 2021 China online high growth white paper - Download attached
- Mex related learning
- 【T31ZL智能视频应用处理器资料】
- Easy to use tcp-udp_ Debug tool download and use
- Flash return file download
猜你喜欢
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Golang DNS 随便写写
leetcode刷题 (5.28) 哈希表
All the ArrayList knowledge you want to know is here
File upload of DVWA range
Chinese Remainder Theorem (Sun Tzu theorem) principle and template code
Asia Pacific Financial Media | "APEC industry +" Western Silicon Valley invests 2trillion yuan in Chengdu Chongqing economic circle to catch up with Shanghai | stable strategy industry fund observatio
数据治理:主数据的3特征、4超越和3二八原则
matplotlib. Widgets are easy to use
Pyqt5 development tips - obtain Manhattan distance between coordinates
随机推荐
[nonlinear control theory]9_ A series of lectures on nonlinear control theory
The State Economic Information Center "APEC industry +" Western Silicon Valley will invest 2trillion yuan in Chengdu Chongqing economic circle, which will surpass the observation of Shanghai | stable
A Closer Look at How Fine-tuning Changes BERT
The resources of underground pipe holes are tight, and the air blowing micro cable is not fragrant?
Migrate data from a tidb cluster to another tidb cluster
Make learning pointer easier (3)
Asia Pacific Financial Media | "APEC industry +" Western Silicon Valley invests 2trillion yuan in Chengdu Chongqing economic circle to catch up with Shanghai | stable strategy industry fund observatio
指针和数组笔试题解析
Wincc7.5 download and installation tutorial (win10 system)
NFT smart contract release, blind box, public offering technology practice -- contract
Analysis of Top1 accuracy and top5 accuracy examples
Restore backup data on S3 compatible storage with br
From monomer structure to microservice architecture, introduction to microservices
Zhong Xuegao, who cannot be melted, cannot escape the life cycle of online celebrity products
MySQL view tablespace and create table statements
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Flash return file download
Pangolin Library: control panel, control components, shortcut key settings
hcip--mpls
Tidb backup and recovery introduction