我正在尝试将我的应用程序从确认模型调整为撤消模型.对于那些不知道的人来说,这是你可以通过一次点击删除某些内容的地方,但如果这是一个错误,你可以轻松地撤消它,而不是每次他/她想要做某事时都打断用户问烦人的"你确定要......?" 通过对话问题.
我的应用程序由Android SQLite DB支持,我希望能够撤消一组有限的删除和更新操作.此外,我只需要能够撤消一个顺序更改,并且信息不必长时间坚持arround.
我在undo/redo上阅读的所有内容都说使用命令模型来存储数据.我的问题是如何以轻量级的可恢复方式存储数据库更改?
我通过460Kbaud UART将PIC24H单片机的数据传输到蓝牙无线电模块.在大多数情况下,此流程工作正常,蓝牙模块使用CTS和RTS线路来管理其内部数据缓冲区已满时的流量控制.但是,蓝牙模块中存在某种类型的错误,当数据连续发送到它而没有任何中断时会重置它,如果我的数据在另一个瓶颈中备份,就会发生这种情况.
如果模块正常工作会很好,但这是我无法控制的.因此,似乎我唯一的选择是在我的端部进行一些数据限制,以确保我不超过数据吞吐量限制(我通过实验大致知道).
我的问题是如何实现数据速率限制?
我当前的UART实现是一个RAM循环FIFO缓冲区,其长度为1024字节,主循环将数据写入.当最后一个字节由UART硬件发出并且我的ISR从缓冲区读取下一个字节并将其发送到UART硬件时,PIC会触发外设中断.
以下是源代码的概念:
uart_isr.c
//*************** Interrupt Service routine for UART2 Transmission
void __attribute__ ((interrupt,no_auto_psv)) _U2TXInterrupt(void)
{
//the UART2 Tx Buffer is empty (!UART_TX_BUF_FULL()), fill it
//Only if data exists in data buffer (!isTxBufEmpty())
while(!isTxBufEmpty()&& !UART_TX_BUF_FULL()) {
if(BT_CONNECTED)
{ //Transmit next byte of data
U2TXREG = 0xFF & (unsigned int)txbuf[txReadPtr];
txReadPtr = (txReadPtr + 1) % TX_BUFFER_SIZE;
}else{
break;
}
}
IFS1bits.U2TXIF = 0;
}
Run Code Online (Sandbox Code Playgroud)
uart_methods.c
//return false if buffer overrun
BOOL writeStrUART(WORD length, BYTE* writePtr)
{
BOOL …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题,我主要是因为我的好奇.
这两行代码之间有什么区别?(在C++中)
for(int i = 0; i < N, N > 0; i++)
for(int i = 0; i < N && N > 0; i++)
Run Code Online (Sandbox Code Playgroud)
条件的选择是完全随意的,我只是对&和之间的差异感兴趣.
我不是任何编码的初学者,但我从未打扰过逗号运算符.
是否有性能/行为差异或纯粹是美学?
最后一点,我知道有一个比条件运算符更好的性能鱼,但我只是好奇.放纵我.
编辑 感谢您的回答.
事实证明,提示这个问题的代码以我描述的方式滥用了逗号运算符.我想知道区别是什么以及为什么它不是&&运算符,但它只是写得不正确.我觉得它没有任何问题,因为它运作得很好.谢谢你把我拉直了.
我正在研究Android平台的一些应用程序,我有两个问题,我不太确定如何处理,两者密切相关.
如何将一个相对较小的数据文件从一个Android设备发送到另一个(最好通过互联网或直接通过无线网络)?
是否有可能从一个Android设备创建一个临时的p2p实时数据流到另一个?一个示例应用是将低分辨率视频从电话A的摄像机传输到电话B或音频.
我非常感谢在任何一个问题上指向正确的方向(文件传输或实时数据传输).
我想为我的网站创建一个FAQ页面,将所有问题列为超链接.单击链接后,该问题的答案应在其下方展开.
默认情况下,答案需要隐藏,最好点击链接切换答案的可见性.
有什么想法吗?
编辑
我已经尝试了几个建议,但遗憾的是它看起来像谷歌网站不允许在HTML中的任何功能.我不能使用脚本,样式,嵌入,iframe或基本文本格式之外的任何内容.每个人都有很棒的想法,但看起来我不得不满足于目录式的FAQ.
我有一个简单的函数Bar
,它使用数据集中的一组值,这些数据集以数据结构数组的形式传入.数据可以来自两个来源:默认值的常量初始化数组或动态更新的缓存.
调用函数确定使用哪些数据并应传递给哪些数据Bar
.
Bar
不需要编辑任何数据,实际上不应该这样做.我应该如何声明Bar
数据参数,以便我可以从任何一组提供数据?
union Foo
{
long _long;
int _int;
}
static const Foo DEFAULTS[8] = {1,10,100,1000,10000,100000,1000000,10000000};
static Foo Cache[8] = {0};
void Bar(Foo* dataSet, int len);//example function prototype
Run Code Online (Sandbox Code Playgroud)
注意,这是C,而不是C++,如果这有所不同;
编辑
哦,还有一件事.当我使用示例原型时,我得到一个类型限定符不匹配警告,(因为我将一个可变引用传递给const数组?).我需要改变什么呢?
我希望我的Android应用程序从互联网上下载一个mp3文件,并在下载时像流一样播放.这甚至可能吗?我该怎么做呢?
基本上我希望用户能够立即收听文件,但是即使他停止收听也要继续下载到SD卡,所以整个mp3文件都会以SD卡的方式结束.
假设我的应用程序有一个小部件,我使用配置屏幕进行初始应用程序小部件设置并设置一些首选项.
我希望用户能够通过进入我的应用程序的设置屏幕并单击意图首选项来更改这些设置,以打开创建应用程序时用户所提供的相同选项.
我可以使用与配置活动相同的活动吗?我必须以不同的方式处理它吗?如何使用新设置更新现有小部件?
我怎样才能让它发挥作用?
我有一个基于CursorAdapter的自定义适配器支持的ListView.
我给它的游标是基于数据库中的Notes列表(每个注释是一个DB行).
一切正常,直到我从数据库中删除一个注释.我不确定如何正确更新cursor/adapter/listview以显示新数据.
我已经阅读了使用adapter.notifyDataSetChanged()
vs cursor.requery()
刷新UI的相互矛盾的帖子,但在这种情况下它们似乎都不起作用.我能够刷新它的唯一方法是从新查询创建一个新游标并调用adapter.changeCursor(newCursor)
.
有人可以演示更新支持数据然后更新UI的正确方法(如果可能的话,使用psuedocode).
我已经开始使用Android库项目来整合我的付费和免费版本代码.
我使用ContentProvider遇到了问题.由于ContentProvider是在库类中定义的,因此两个应用程序都使用相同的权限.这意味着由于INSTALL_FAILED_CONFLICTING_PROVIDER错误,android会阻止安装第二个应用程序(按任意顺序).
05-22 11:14:40.563: WARN/PackageManager(102): Can't install because provider name com.cfms.android.podcast (in package com.cfms.android.podcastlite) is already used by com.cfms.android.podcastpaid
05-22 11:14:40.563: WARN/PackageManager(102): Package couldn't be installed in /data/app/com.cfms.android.podcastlite-2.apk
Run Code Online (Sandbox Code Playgroud)
我该如何处理这个问题?理想情况下,我希望每个应用程序版本的权限相同,所以我不必在公共代码库中放入一堆异常.如果那是不可能的,我该怎么办呢?