我无法让旋转编码器与AVR微控制器一起正常工作.编码器是机械ALPS编码器,我使用的是Atmega168.
澄清
我曾尝试使用外部中断来收听引脚,但看起来它太慢了.当引脚A变为高电平时,中断程序开始,然后检查引脚B是否为高电平.我们的想法是,如果引脚B变高,引脚A变高,那么它就会逆时针旋转.如果引脚B为低电平,则它按顺时针方向旋转.但似乎AVR检查引脚B需要太长时间,所以它总是读得很高.
我还尝试创建一个程序,只需阻塞直到引脚B或引脚A发生变化.但可能是旋转编码器时噪音太大,因为这也不起作用.我的最后一次尝试是有一个计时器,它将最后8个值存储在缓冲区中,并检查它是否从低到高.这也不起作用.
我已经尝试过对编码器进行范围设计,它似乎在第一个Pin的2到4ms之间使用,直到另一个Pin发生变化.
我有两张桌子,一张是我们买的产品和数量,另一张是卖的.因此,当前库存是已购买表中所有数量列的总和减去销售表中的行数.怎么能在MySQL中表达出来.请记住,有许多不同的产品.
编辑: 为了使它更难,我有另一个要求.我有买的桌子,卖桌子,但我也有产品表.我想要一份所有产品的清单,我想知道每种产品的可用数量.目前答案的问题是他们只返回我们已售出或已购买的产品.我想要所有的产品.
我见过很多关于mysqli的文章和问题,他们都声称它可以防止sql注入.但它是否是万无一失的,或者还有一些方法可以绕过它.我对跨站点脚本或网络钓鱼攻击不感兴趣,只对sql注入感兴趣.
我应该首先说的是我正在使用准备好的陈述.这就是我对mysqli的意思.如果我使用没有任何字符串连接的预准备语句,那么它是万无一失的吗?
我有一个IOS项目,其中包含webview中显示的html文件资源.这些html文件有不同的部分对应于片段(例如,index.html#section1,index.html#section2),我想在webview中加载它们.不幸的是,使用[NSURL fileURLWithPath:url]不适用于片段.将#转换为%23url,并且找不到该文件.如果我使用该[NSURL URLWithString:url]方法,它可以工作,但此方法无法加载本地资源.
有没有办法让webview加载带有片段的本地资源URL?
我有一个这样的网址:http://localhost:8080/search.json?q=L%u00e6r,这是对Lær的编码搜索.
不幸的是,使用此url创建WebRequest WebRequest.Create(url)会产生以下url : http://localhost:8080/search.json?q=L%25u00e6r.
请注意,它错误地解码%u00e6并生成%25u00e6r.有没有办法转换这种unicode转义值或让WebRequest.Create正确处理它?
这很可能会被报告为.net团队的错误.如果查询包含§,æ,ø或å(或任何其他非ascii字符)WebRequest.Create(),Request.QueryString.ToString()则不能使用返回的查询字符串.这是一个小的mvc动作,可用于测试它.用查询调用它Query?q=L%C3A6r
public ActionResult Query()
{
var query = Request.QueryString.ToString();
var url = "http://localhost:8080?" + query;
var request = WebRequest.Create(url);
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
return new FileStreamResult(stream, "text/plain");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
不幸的是,@ animaonline的解决方案不适http://localhost:8080/search.json?q=Lek+%26+L%u00e6r用于那些被解码的网址http://localhost:8080/search.json?q=Lek & Lær,在这里WebRequest.Create被混淆了&,并认为它将参数分开,而不是参数的一部分q.
在 ASP.NET 4.5 应用程序中,哪一个更适合从同步方法调用异步方法?
var result = Task.Run(() => SomethingAsync()).GetAwaiter().GetResult();
// or
var temp = SynchronizationContext.Current;
try
{
SynchronizationContext.SetSynchronizationContext(null);
return SomethingAsync().GetAwaiter().GetResult();
}
finally
{
SynchronizationContext.SetSynchronizationContext(temp);
}
Run Code Online (Sandbox Code Playgroud)
注意:是的,我知道我应该async/await一直使用,但我问的是最底层,在 ASP.NET Core 之外,过滤器和剃刀视图不是异步的,所以如果我想调用异步方法从过滤器或剃刀视图,我需要以某种方式同步它。SomethingAsync().GetAwaiter().GetResult()由于 ,仅仅使用就会导致死锁SynchronizationContext,所以我需要一种在没有SynchronizationContext.
编辑 这是一个简单的帮助器类,它干净地包装了它:
public static class Async
{
public static T Run<T>(Func<Task<T>> func)
{
var context = SynchronizationContext.Current;
if (context == null)
{
return func().GetAwaiter().GetResult();
}
SynchronizationContext.SetSynchronizationContext(null);
try
{
return func().GetAwaiter().GetResult();
}
finally
{
SynchronizationContext.SetSynchronizationContext(context);
}
}
public static void Run(Func<Task> …Run Code Online (Sandbox Code Playgroud) 我想在java中为具有首选项的用户创建一个HashMap.这在数据库中很容易做到,但不幸的是我无法使用数据库.我需要的是一种在HashMap中按名称查找用户的方法,以及查找具有特定兴趣的所有用户(例如高尔夫).如果删除用户,则应删除所有兴趣.
任何人都知道制作这种数据结构的好方法吗?
我正在尝试创建一个哈希数组,但是我在循环数组时遇到了麻烦.我试过这段代码,但它不起作用:
for ($i = 0; $i<@pattern; $i++){
while(($k, $v)= each $pattern[$i]){
debug(" $k: $v");
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个数据库,用户可以在其中搜索包含一个或多个项目列表的记录.我正在使用IN进行搜索,但我无法使用IN来处理预准备语句.这就是我尝试过的:
SELECT * FROM tbl1 WHERE col IN (?)
Run Code Online (Sandbox Code Playgroud)
但是准备好的声明将我传递的项目列表视为单个项目.我怎样才能做到这一点?
我正在使用sqlite,如果它有任何区别.
在用Java编写WebSocket服务器时,我遇到了这个奇怪的错误.我把它减少到两个小的java文件,一个是服务器,另一个是客户端.客户端只需发送0x00字符串Hello然后0xFF(根据WebSocket规范).
在我的Windows机器上,服务器打印以下内容:
Listening
byte: 0
72 101 108 108 111 recieved: 'Hello'
Run Code Online (Sandbox Code Playgroud)
在我的unix框中,相同的代码打印以下内容:
Listening
byte: 0
72 101 108 108 111 -3
Run Code Online (Sandbox Code Playgroud)
获得-3而不是接收0xFF,从不打破循环并且永远不会打印它收到的内容.
代码的重要部分如下所示:
byte b = (byte)in.read();
System.out.println("byte: "+b);
StringBuilder input = new StringBuilder();
b = (byte)in.read();
while((b & 0xFF) != 0xFF){
input.append((char)b);
System.out.print(b+" ");
b = (byte)in.read();
}
inputLine = input.toString();
System.out.println("recieved: '" + inputLine+"'");
if(inputLine.equals("bye")){
break;
}
Run Code Online (Sandbox Code Playgroud)
我还将这两个文件上传到我的服务器:
我的Windows机器正在运行Windows 7,而我的Linux机器正在运行Debian
编辑:
当b是一个int时,它仍然很奇怪.我发送0xFF(255)但接收65533(不是65535或255).