小编Sta*_*ful的帖子

Objective-C整数算术

我正在尝试计算iPhone应用程序中的一些数字.

int i = 12;
int o = (60 / (i * 50)) * 1000;
Run Code Online (Sandbox Code Playgroud)

我希望在这个例子中o为100(即毫秒),但它等于0,由NSLog(@"%d",o)显示.

这也等于0.

int o = 60 / (i * 50) * 1000;
Run Code Online (Sandbox Code Playgroud)

这等于250,000,这是从左到右的直接数学.

int o = 60 / i * 50 * 1000;
Run Code Online (Sandbox Code Playgroud)

什么在我头顶飞过?

谢谢,
尼克

c math objective-c integer-division

10
推荐指数
1
解决办法
2万
查看次数

GAE无法识别Cookie?

我正在玩GAE和Android试图获得一个为web服务制作的应用程序.我正在完成从Android上的AccountManager获取身份验证令牌,根据需要获取Cookie,然后将该cookie附加到GAE python应用程序处理的GET请求的步骤.出于某种原因,GAE应用程序似乎不识别cookie或其他东西.对不起这篇巨大的帖子,我想我会在这里尽可能多地获取代码以帮助解释.

我在GAE中有这个基本类来测试用户是否被识别.

class TestUser(webapp.RequestHandler):
  def get(self):
    if users.get_current_user():
        self.response.out.write(users.get_current_user().nickname())
    else:
        self.response.out.write('no user')

application = webapp.WSGIApplication([
  ('/', MainPage),
  ('/testuser', TestUser)
], debug=True)

def main():
  run_wsgi_app(application)

if __name__ == '__main__':
  main()
Run Code Online (Sandbox Code Playgroud)

从浏览器中,这非常有效.我看到了用户.在Android上执行时,我得到"没有用户".

这是一堆Android代码:

的onCreate:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        cookieLength = (TextView)findViewById(R.id.cookielength);

        cookie = "";        

        AccountManager manager = AccountManager.get(getApplicationContext());
        Account[] accounts = manager.getAccountsByType("com.google"); 
        new GetAuthTokenTask().execute(accounts);
    }
Run Code Online (Sandbox Code Playgroud)

获取身份验证令牌,使其失效,然后再次获取以避免过期的令牌:

private class GetAuthTokenTask extends AsyncTask<Account, Object, String> {

    @Override
    protected String doInBackground(Account... accounts) {
        AccountManager manager = AccountManager.get(getApplicationContext());
        Account account = …
Run Code Online (Sandbox Code Playgroud)

google-app-engine android

6
推荐指数
1
解决办法
476
查看次数

Mac-虚拟串行端口

我需要创建一个Cocoa应用程序,该应用程序将创建可供其他应用程序使用的虚拟串行端口,这意味着已在IO Kit注册表中注册。

该应用程序的要点:

  • 创建一个虚拟串行端口(在/ dev中列出并在IOKit注册表中注册)
  • 启动与另一台计算机的TCP连接
  • 将虚拟串行端口上收到的所有内容代理到网络,反之亦然。

与计算机上的串行端口通信的第三方应用程序将使用此应用程序,从而可以在网络上定位特定的串行设备。可可和网络部分没问题,我已经编写了一些通过网络交谈的应用程序。我的挂断是串行端口。

我已经使用socat / netcat / minicom进行了测试,以验证它们是否都可以代理网络上的pty / tty流量,但是我使用的tty不会被随机应用程序显示为可用,因为它未在IO Kit中注册注册表。

虽然我可以使用pty / tty主站/从站进行通信,但我需要此从站tty来显示Mac应用程序。非常方便的是一种在IO Kit注册表中注册tty的方法。

我真的需要创建在Cocoa应用运行时注册的自定义IOKit kext驱动程序吗?如果是这样,那么我的学习曲线就很大。我应该从哪里开始阅读?或者,是否可以使用IOKit创建虚拟串行端口并将其注册为应用程序可用的串行端口,而不必加载任何内核扩展?

感谢您提供的任何帮助,
有状态

macos serial-port iokit

4
推荐指数
1
解决办法
7276
查看次数

将一个字节增加一个,就像它是一个Base10数字一样

我正在从硬件设备的串口读取数据,我需要将其递增1然后发送回设备,但是我需要将其递增,就像它是一个base10数字一样.

例如,如果我读取0x09,我需要发回0x10而不是0x0a.或者,如果我收到0x89,我应该发回0x90.如果我收到0x99,我会发送回0x00并将1传送到前一个字节.它实际上总共需要5个字节.

我有这个增量以下面的方式工作.我想知道是否有更好的方式通过一些独特的移位和/或和/或位.

感谢您提供的任何指示!

有状态

#include <stdio.h>
#include <stdlib.h>

int main()
{
  //start with 0x09 as byte
  char input = 0x09;
  printf("input is: 0x%02x\n", input);

  //increment it by one
  input++;

  //turn it into a two char array as a base10 value, ignore overflow for now
  char asString[3];
  sprintf(asString, "%d", input);

  //convert back to byte
  unsigned char newI = ((asString[0]-0x30)*16)+((asString[1]-0x30));
  printf ("newI is 0x%02x\n", newI);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

2
推荐指数
1
解决办法
640
查看次数

在Mountain Lion中使用IKImageView和NSScrollView进行双指拖动

我有一个Mac应用程序,已经在应用程序商店中存在了一年左右.它最初是与目标SDK 10.7,Lion一起发布的.在更新Mountain Lion后,它不再有效.

该应用程序在嵌入NSScrollView的IKImageView中显示大图像.将其放入滚动视图的目的是让两个手指拖动工作,而不是用户必须单击拖动.使用Nicholas Riley的ScrollViewWorkaround,我可以使用两个手指滚动来显示用户放大后剪辑的内容.就像您在预览应用中看到的一样.

Nicholas Riley的解决方案: IKImageView和滚动条

现在在Mountain Lion这不起作用.放大,缩放或缩放按钮后,图像被锁定在图像的左下部分.它不会滚动.

所以问题是,在IKImageView中显示大图像的适当方法是什么,并且有两个手指拖动缩放图像?

谢谢,
有状态

macos cocoa nsscrollview ikimageview osx-mountain-lion

0
推荐指数
1
解决办法
1578
查看次数