- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 C/Arduino 相当陌生
我正在尝试简化我的代码,以便在编写循环时我只需要一个函数。
该代码用于 SPI LCD 显示器,我有两个代码想要合并为一个,第一个代码是将 32 个字符的 txt 写入屏幕,从数组中选取 32 个字符 - 这非常完美
void writeLCD(char LcdText[33]){
unsigned char TextRow, CharacterRow, TextColumn, CharNum ;
unsigned int InPointerString ;
InPointerString = 1 ;
SPI.transfer(0x48) ;
SPI.transfer(0);SPI.transfer(0);SPI.transfer(0);
for(TextColumn = 8 ; TextColumn > 0 ; TextColumn--){
for(CharacterRow = 8 ; CharacterRow > 0 ; CharacterRow --){
for(TextRow = 0 ; TextRow < 4; TextRow++){
CharNum = LcdText[TextRow*8 + TextColumn-1] ;
if(CharNum > 0x7F){
SPI.transfer(Font8x8[(CharNum-0x80)*8 + CharacterRow - 1] & 0x0F ) ;
SPI.transfer(((Font8x8[(CharNum-0x80)*8 + CharacterRow - 1] & 0xF0) >> 4) & 0x0f ) ;
} else {
SPI.transfer(Font8x8[CharNum*8 + CharacterRow - 1] & 0x0F ) ;
SPI.transfer(((Font8x8[CharNum*8 + CharacterRow - 1] & 0xF0) >> 4) & 0x0f ) ;
}
}
}
}
SPI.transfer(0x43) ;
delay(1);
}
第二个代码是从数组中选取 512 字节并将图像写入屏幕 - 这很完美
// Data is a pointer to 512 bytes of image data to display
void BMP(uint16_t * data){
uint16_t i;
SPI.transfer(0x49); // Start Bitmap CMD
for (i=0; i<512; i++){
SPI.transfer(data[i]);
} // Send BMP Array
SPI.transfer(0x43); // End Bitmap CMD
delay(1); // wait 1ms
}
目前,数组存储在单独的库中,以使 BMPlibrary 和 TXTlibrary 的工作更轻松
只是向大家确认 - 两个代码都可以完美独立工作
我想出了下面的代码将两者合二为一,使用 if 语句根据数组的大小来决定如何处理数组,如果它的小 = 写入 txt,如果它的大 = 写入图像。下面的代码适用于 BMP 但无法编译,因为
void LCD(char RGBXXX, uint16_t str[]){
RGB(RGBXXX);
if(sizeof(str) > 33){
char data[33];
memcpy(data,(uint8_t*)str,33);
writeLCD(data);
}
else {
BMP(str);
}
}
但是我现在遇到的问题是,在声明类型转换时,如果我将其设置为 uint8_t,那么代码的 txt 部分可以正常工作,但图像代码不会,
cannot convert 'uint8_t*' to 'uint16_t*' for argument '2' to 'void LCD(char, uint16_t*)'
如果我设置为 uint16_t 图像工作正常,但 txt 不行!
我并不指望慈善机构能伸出一点帮助来找出我哪里出了问题,我将不胜感激!我花了几个小时来找出为什么图像一开始不起作用,直到我意识到它与字节大小有关,但现在我不知道如何将两者结合起来!
最佳答案
void* 将解决你的转换问题并且指针的 sizeof 永远不会 > 33所以试试这个:
void LCD(char RGBXXX, void *str, int is_data) {
RGB(RGBXXX);
if (is_data != 0) {
char data[33];
memcpy(data,(uint8_t*)str,33);
writeLCD(data);
}
else {
BMP((uint16_t *)str);
}
}
关于C - Arduino - 无法将 'uint8_t*' 转换为 'uint16_t*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182339/
我有以下代码 unsigned int headerbytes = 0U; headerbytes = (unsigned int*)strtoull(packet_space->header
我有这段无法编译的代码: public struct MyStruct { private fixed uint myUints[32]; public uint[] MyUints
在 Go 中,从函数返回哪个更有效:返回 uint 还是返回 *uint? 该函数在 cpu 密集型库的内部 for 循环中调用。 最佳答案 一般来说,只要效率是个问题,您就应该运行基准测试。 让我们
int 加上 unsigned int 返回一个 unsigned int。应该这样吗? 考虑这段代码: #include #include #include class test {
我正在尝试从可通过 URL 访问的内容中初始化一个字符串: actualresponse.response = String(contentsOfURL: url, usedEncoding: NSU
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它. 1年前关闭。 Improve this
我从函数 Swift 得到类型为 UnsafeMutablePointer 的结果 我可以把它转换到UInt吗? ? 最佳答案 只需使用memory 属性来访问底层数据。 let ptr: Unsaf
我深入了解了 List并发现了以下代码: public T this[int index] { get { // Following trick can red
我在 this page on bit twiddling 的帮助下编写了这个函数: uint16_t *decode(uint64_t instr) { // decode instr (thi
我正在从微 Controller 读取两个寄存器。一个具有 4 位 MSB(前 4 位有一些其他内容),另一个具有 8 位 LSB。我想将其转换为一个 12 位 uint(准确地说是 16 位)。到目
要演示的示例代码: public int FindComplement(int num) { //uint mask = ~0; //<-- error CS0031 //
$ rustc --test mapAsMapKey.rs mapAsMapKey.rs:18:43: 18:52 error: mismatched types: expected `fn@(&&@
一般问题:我有一个很大的二维点空间,里面稀疏地分布着点。把它想象成一 block 撒满黑点的白色大 Canvas 。我必须多次迭代和搜索这些点。 Canvas (点空间)可能很大,接近极限int 的值
假设我们只是调用一个普通数字,数字会启动什么。 uint256 plainNumber 我明白它是零。但是我要问的是,有没有办法检测该数字是由编译器还是用户变量设置的。例如... uint256 pl
我试图在 leetcode.com ( https://leetcode.com/problems/number-of-1-bits/ ) 上解决一个简单的问题,我遇到了一个奇怪的行为,这可能是我缺乏
uint number = 0x418 in bits : 0000010000011000 uint number1 = 0x8041 in bits: 1000000001000001 uint
我如何在 C# 中生成具有某个最大值的伪随机 uint? (不需要最低限度。)似乎有很多问题要求完全随机,但没有上限。 澄清:此上限可能大于 int.MaxValue,因此仅强制转换 Random.N
我已经用私有(private)数据成员围绕 ulong 编写了一个简单的包装器。我希望能够将包装器转换为 ulong 以检索数据。我希望强制转换为 uint 并丢失数据是非法的,因此我没有编写对 ui
哪些是“Uint”变量?就是有“Uint8”、“Uint16”等…… 但是它们是什么? 现在我有一些时间使用 C++,但我从来不需要使用这些变量并引起我的好奇。 提前致谢。 最佳答案 uint 不是标
我有一个 native 方法,它需要一个指针来写出一个双字(uint)。 现在我需要从 (Int) 指针中获取实际的 uint 值,但是 Marshal 类只有方便的方法来读取(有符号)整数。 如何从
我是一名优秀的程序员,十分优秀!