当前位置:网站首页>[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;
}
边栏推荐
- Data governance: metadata management
- Data governance: 3 characteristics, 4 transcendence and 3 28 principles of master data
- 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
- Secure captcha (unsafe verification code) of DVWA range
- What is the use of entering the critical point? How to realize STM32 single chip microcomputer?
- What are the ways to download network pictures with PHP
- 将 NFT 设置为 ENS 个人资料头像的分步指南
- 22. Empty the table
- Restore backup data on S3 compatible storage with br
- Oracle time display adjustment
猜你喜欢
Step by step guide to setting NFT as an ens profile Avatar
National economic information center "APEC industry +": economic data released at the night of the Spring Festival | observation of stable strategy industry fund
[t31zl intelligent video application processor data]
24. Query table data (basic)
Sanzi chess (C language)
Golang DNS write casually
Uibehavior, a comprehensive exploration of ugui source code
[research materials] 2021 China online high growth white paper - Download attached
Wireshark grabs packets to understand its word TCP segment
Data governance: 3 characteristics, 4 transcendence and 3 28 principles of master data
随机推荐
[redis] Introduction to NoSQL database and redis
Ruffian Heng embedded bimonthly, issue 49
Step by step guide to setting NFT as an ens profile Avatar
07- [istio] istio destinationrule (purpose rule)
图像融合--挑战、机遇与对策
leetcode刷题 (5.29) 哈希表
C language - bit segment
Oracle time display adjustment
Data governance: metadata management
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
Learn Arduino with examples
flask返回文件下载
将 NFT 设置为 ENS 个人资料头像的分步指南
NFT smart contract release, blind box, public offering technology practice -- jigsaw puzzle
指针进阶---指针数组,数组指针
What are the ways to download network pictures with PHP
Migrate data from CSV files to tidb
CAD ARX 获取当前的视口设置
Circuit breaker: use of hystrix
Nft智能合约发行,盲盒,公开发售技术实战--拼图篇