-
多谢楼上各位的回复! 我自己看了下,GPS数据长度长度不定的话,用DMA方式确实是不好做的,正如 heuyck 所说,DMA要设置接受的字节长度。heuyck提到的方法和我之前的想法一样,我试试。
-
的确是有点繁琐,不过版面的确是变好看了
-
说明产生多个0x70084和stm32的工作错乱有一定的关系。
但是我直接在I2C_EVENT_MASTER_BYTE_TRANSMITTING中,
最后一个字节发送完成后处理I2C_GenerateSTOP(I2C1, ENABLE);
程序不能正常工作
-
看一遍的话,也可能是浆糊灌顶,嘿嘿。
一遍很难理解清楚的、、、
-
如果仅仅为了解决问题的话,我觉得一般LOGO图案不会太复杂,简单压缩一下放在EBOOT中问题应该不大。
我的LOGO就是写了个matlab程序,把320x240x24bit的bmp转换成RGB565,并使用最简单的RLE压缩了一下,不到10K字节,直接放到数组里面了。
-
看一下这个按键的驱动程序,驱动是否初始化且打开,驱动程序中是否发送了相应的按键消息到系统中。
-
引用 3 楼 galle 的回复:
来晚了!
一样!
-
通过上面各位的阐述,基本了解了些,那么如果是小数据量的共享用哪种方式比较合适呢?比如我想定义几个类似全局变量,所有的进程都能访问?从方便和效率上用何种方法合适呢?谢谢上面几位精彩的讲解!!
-
波特率不对
-
谢谢分享!
下边那个比喻看到过,呵呵
-
直接用IImage 旋转 可以实现任意旋转,只是速度不快。
给你贴代码
BOOL CImageMaster::RotateImage(int iAngle, HDC hdc, ImageDrawMode mode, const RECT *pDstRect, const RECT *pSrcRect, BOOL bDraw)
{
if(pDstRect == NULL)
{
return FALSE;
}
if (m_ImageInfo.Width >= 1024 || m_ImageInfo.Height >= 768)
{
RECT rcDraw = {0};
CalculateDrawArea(mode,pDstRect,pSrcRect,&rcDraw);
m_ImageInfo.Width = rcDraw.right - rcDraw.left;
m_ImageInfo.Height = rcDraw.bottom - rcDraw.top;
}
m_pImagingFactory->CreateBitmapFromImage(m_pImage, m_ImageInfo.Width, m_ImageInfo.Height, m_ImageInfo.PixelFormat, InterpolationHintDefault, &m_pBitmap);
if(m_pImage != NULL)
{
m_pImage->Release();
m_pImage = NULL;
}
m_pBitmap->QueryInterface(IID_IBasicBitmapOps, (void **)&m_pBasicBitmap);
if (m_pBitmap != NULL)
{
m_pBitmap->Release();
m_pBitmap = NULL;
}
m_pBasicBitmap->Rotate((float)iAngle, InterpolationHintDefault, (IBitmapImage **)&m_pBitmap);
if (m_pBasicBitmap != NULL)
{
m_pBasicBitmap->Release();
m_pBasicBitmap = NULL;
}
m_pBitmap->QueryInterface(IID_IImage, (void **)&m_pImage);
if (m_pBitmap != NULL)
{
m_pBitmap->Release();
m_pBitmap = NULL;
}
m_pImage->GetImageInfo(&m_ImageInfo);
if(IsOKMemoryDC(&m_IntegrityMemDCInfo) == FALSE)
{
if(IsOKImagingInterfaces() == FALSE)
{
return FALSE;
}
if(CreateMemoryDC(hdc,&m_IntegrityMemDCInfo,m_ImageInfo.Width,m_ImageInfo.Height) == FALSE)
{
return FALSE;
}
RECT rcMemDC = {0,0,m_ImageInfo.Width,m_ImageInfo.Height};
HRESULT hr = m_pImage->Draw(m_IntegrityMemDCInfo.hdc,&rcMemDC,NULL);
if(FAILED(hr))
{
ReleaseImagingInterfaces();
DeleteMemoryDC(&m_IntegrityMemDCInfo);
return FALSE;
}
}
BOOL bResult = TRUE;
if(bDraw == TRUE)
{
RECT rcDraw = {0};
CalculateDrawArea(mode,pDstRect,pSrcRect,&rcDraw);
bResult = Draw(hdc,&rcDraw,&m_IntegrityMemDCInfo,pSrcRect);
}
return bResult;
}
-
好贴啊,支持!回复内容太短了!
-
祝福,,,,,
接分
-
你用的C#还是C++呢?
像图片复制那样的方法来对这些控件进行处理?这句话是什么意思呀??没有看懂?双缓冲?
我有几个问题
1.界面一多,,请问多到什么程度呢
2.你的edit里面是不是有很多数据,,还是只是有很少的数据?
3.你可以自己画edit,但如果全部代码都要你自己写的话,很大工作量的,焦点的问题好解决,鼠标点到哪里了,,哪一个控件就有焦点了.
附上一个自己画的edit的程序,有兴趣可以看下[url=http://www.wceui.cn/wceui_edit_demo.html][/url]
-
引用 8 楼 sunrain_hjb 的回复:
如果实现了HIVE REG,第一次执行的时候,它会占用一些时间的。
如果楼主确定只是第一次启动时会有延迟,以后再启动没有,那大概就是HIVE REG了。
谢谢,那HIVE REG是调用什么函数处理的?
发现我的EBOOT实现binfs分区,烧写镜像后,启动就死在了NandFlash FMD_Init Done
。。。。。。。。
-
我也在做,单片机能将At指令通过串口发送,用串口调试助手查看了,TC35i也启动了,而且能完成打电话的的功能,就是发短信不成功。
//单片机控制GSM发短信和打电话程序
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
unsigned char xdata rec[80];
sbit D10LED=P0^0;
sbit D11LED=P0^1;
sbit SW4=P0^2;
sbit SW5=P0^3;
sbit beeper=P0^4;
sbit J1=P0^6;
sbit J2=P0^7;
sbit START_TC=P3^2; //启动TC35i的控制端
uchar code PhoneCall[]={"ATD13795568363;"};
uchar code PhoneNum[]={"AT+CMGS=\"+8613795568363\""};
uchar code CenterNum[]={"AT+CSCA=\"+8613800813500\""};
uchar code TxtMode[]={"AT+CMGF=0"};
uchar code Sms[] = {"GsmTest"};
uchar code AT[]={"AT"};
uchar ok[]={"00"};
uchar k;
void GSM_OKint() interrupt 4 using 1
{
if(RI==1)
{
RI=0;
ok[k++]=SBUF;
if(k>1)
{k=0;}
}
}
delay(uint ms)// 延时子程序
{
uchar i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
delay_Xms(uint t)
{
uint i,j;
for(i=t;i>0;i--)
for(j=113;j>0;j--);
}
/*******************************************************/
Print_Char(uchar ch)//发送单个字符
{
SBUF = ch; //送入缓冲区
while(TI == 0); //等待发送完毕
TI = 0; //软件清零
}
Print_Str(uchar * str,uint len)//发送字符串,调用Send_Char() len字符串长度
{
while(len--)
{
Print_Char(*str++);
}
}
/********************************************************/
Ini_UART(void)//串口初始化、定时器初始化
{
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
SCON = 0x50;
PCON = 0x00;
TF1 = 1;
TR1 = 1;
ES=1;
ET0=1;
EA=1;
}
void GSM_AT()
{
Print_Str(AT,2);
Print_Char('\r');
ES=1;
delay(1000);
}
void GSM_CENTER()
{
Print_Str(CenterNum,24);
Print_Char('\r');
ES=1;
delay(1000);
}
void GSM_TXT()
{
Print_Str(TxtMode,9);
Print_Char('\r');
ES=1;
delay(1000);
}
void GSM_CMGS()
{
Print_Str(PhoneNum,24);
Print_Char('\r');
ES=1;
delay(1000);
}
void GSM_SMS()
{
Print_Str(Sms,7);
Print_Char(0x1a);
ES=1;
delay(5000);
delay(5000);
}
void phone()
{
Print_Str(PhoneCall,15);
Print_Char('\r');
ES=1;
delay(5000);
delay(5000);
}
void main()
{
uint i=0;
Ini_UART(); //串口初始化
beeper=0;
delay_Xms(500);
delay_Xms(500);
beeper=1; //蜂鸣器响一次
D10LED=0;
J1=0;
delay_Xms(2000);
D10LED=1;
J1=1;
D11LED=0;
J2=0;
delay_Xms(2000);
D11LED=1;
J2=1;
START_TC=0;//启动TC35i
delay_Xms(1500);
START_TC=1;//完成启动
while(1)
{
if(i
-
谢谢楼上的回答,能给个简单的代码演示吗?
-
建一个空的项目,然后把这些源文件导入进去。
-
运算的时间肯定很快,知道这个时间意义不大,也不好测
-
引用 17 楼 zhenwenxian 的回复:
SDRAM从8000_0000开始的
留流出来前面的放map table
根据??