Franson 制作一整套串口工具,包括环回端口。
如果您只需要环回,可以使用免费驱动程序:http://com0com.sourceforge.net/
如果您想与实际设备连接,则需要使用 USB 转串口转换器。它们只要 2 美元左右。
- 如果你想为 .h 文件创建标准 C 原型,请使用 mkproto.c
mkproto thisoldfile.c >这个旧文件.h
,您还可以在 C 文件定义中粘贴旧的 K&R 代码。
罗伯特的另一个答案 a> 在因“仅链接”答案而被删除之前包含以下(有用)信息:
您可以在以下位置找到 mkproto.c:
https://www.pcorner.com/list/C
那里还有很多其他实用程序。
该网站拥有两个版本的“mkproto”——1989-09-07 的 MKPROTO.ZIP
和 1992-06-27 的 MKPROTOB.ZIP
。您必须在托管站点“程序员之角”注册才能下载文件。这些文件出现在可下载的长页面的大约 2/3 处。
您不能在绑定中使用Source={DynamicResource Locator}
。如果您使用 Source
属性,则需要使用 StaticResource
还是不知道那是什么。
在另一台机器上打开相同的解决方案,并在 Add.aspx 上看到黄色错误
打开一个新的 aspx 并按组件复制 componenet - 它可以工作。
FreeMarker 对 AWT 有着严重的依赖。它使得它无法与 Google App Engine 等工具一起使用。
我更喜欢使用 StringTemplate 来满足我所有的 Java 模板需求。它是唯一一个基于Java的模板系统,将逻辑与模板严格分离。
StringTemplate 是一个 Java 模板引擎(带有 C#、Python、
Ruby 和 Scala)用于生成源代码、网页、电子邮件或任何
其他格式的文本输出。 StringTemplate特别擅长
多目标代码生成器、多个站点皮肤,以及
国际化/本地化其显着特点是严格执行
与其他引擎不同,模型视图分离。严格的分离使得
网站和代码生成器更加灵活和可维护;它也
提供了针对恶意模板作者的出色防御。
由于您正在生成 XML
另一个乍一看并不明显的解决方案是使用 JAXB。我们这里有一个项目需要生成 XML,我们为输出文件定义了非常明确的 XSD 文件,构建对象并编组它们非常简单且轻松。
如果使用高复制数据存储,请将传递给 --application 的值从 appname
更改为 s~appname
。
使用.GroupBy
,您将获得IGrouping
列表,因此选择如下所示:
IEnumerable<Reward> listConcat = list1.Concat(list2)
.GroupBy(x => x.User)
.Select(x => new Reward { User= x.Key, Money=x.Sum(y => y.Money) });
感谢克里斯蒂安,我解决了这个问题。不过,我不确定这是最干净的解决方案。
我创建了一个名为 resetneeded
的布尔值。
在点击按钮代码中,我这样做:
btnVolgende.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
如果(需要重置){
光标 = (光标) WoordData.fetchset(kernset);
需要重置=假;
}
开始管理光标(光标);
tvFlitswoord.setText(cursor.getString(0));
光标.moveToNext();
if (cursor.isAfterLast()){
光标.moveToFirst();
}}
。
然后,在 onStart() 中,我将布尔值 resetneeded
设置为 true
// 编辑 - 第二个解决方案
最后,我决定使用 ArrayList 将单词传递到 TextView(并使用按钮循环浏览它)。 ArrayList 似乎更容易处理并且不那么脆弱。
代码:
public void onStart(){
super.onStart();
getPrefs();
wordlistarray.clear();
cursor = (Cursor) WoordData.fetchset(kernset);
cursor.moveToFirst();
while(!cursor.isAfterLast()) {
String wordtoadd = cursor.getString(0);
wordlistarray.add(wordtoadd);
cursor.moveToNext();
}
for(int i = 0; i < wordlistarray.size();
i++){ Log.d("word in array", "" + wordlistarray.get(i)); }
有一种方法可以解决这个问题。两种实现都包含纯 python“WichmannHill”PRNG。
它速度较慢,但在 Jython 和 CPython 中给出相同的结果。
在我的代码中我替换
random.seed(1)
uuid += random.choice(hexdigits)
为
rand = random.WichmannHill(1)
uuid += rand.choice(hexdigits)
只要标头注释被唯一分隔(即没有其他标头注释以 // ----------
开头),并且替换文本是常量,以下 awk 脚本应该做你需要的事情:
BEGIN { normal = 1 }
/\/\/ ----------/ {
if (normal) {
normal = 0;
print "// **********";
print "// some replacement";
print "// text";
print "// that could have any";
print "// format";
print "// **********";
} else {
normal = 1;
next;
}
}
{
if (normal) print;
}
这会打印它看到的所有内容,直到遇到段落分隔符。当它看到第一个段落时,它会打印出替换段落。在看到第二段分隔符之前,它不会打印任何内容。当它看到第二个段落分隔符时,它将再次开始正常打印下一行。
虽然从技术上讲您可以从命令行执行此操作,但您可能会遇到棘手的 shell 引用问题,尤其是当替换文本包含单引号时。将脚本放入文件中可能会更容易。只需将 #!/usr/bin/awk -f
(或 awk 返回的任何路径 )放在顶部即可。
编辑
要在 awk 中匹配多行,您需要使用 getline
。也许是这样的:
/\/\/ ----------/ {
lines[0] = "// header";
lines[1] = "// comment";
lines[2] = "// to be replaced";
lines[3] = "// ----------";
linesRead = $0 "\n";
for (i = 0; i < 4; i++) {
getline line;
linesRead = linesRead line;
if (line != lines[i]) {
print linesRead; # print partial matches
next;
}
}
# print the replacement paragraph here
next;
}
正如@MilacH 指出的,实现中存在错误。如果 statusCode >返回 400 并抛出 IOException,因为拦截器未调用 errorHandler。该异常可以被忽略,然后在处理程序方法中再次捕获。
package net.sprd.fulfillment.common;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import static java.nio.charset.StandardCharsets.UTF_8;
public class LoggingRequestInterceptor implements ClientHttpRequestInterceptor {
final static Logger log = LoggerFactory.getLogger(LoggingRequestInterceptor.class);
@SuppressWarnings("HardcodedLineSeparator")
public static final char LINE_BREAK = '\n';
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
try {
traceRequest(request, body);
} catch (Exception e) {
log.warn("Exception in LoggingRequestInterceptor while tracing request", e);
}
ClientHttpResponse response = execution.execute(request, body);
try {
traceResponse(response);
} catch (IOException e) {
// ignore the exception here, as it will be handled by the error handler of the restTemplate
log.warn("Exception in LoggingRequestInterceptor", e);
}
return response;
}
private void traceRequest(HttpRequest request, byte[] body) {
log.info("===========================request begin================================================");
log.info("URI : {}", request.getURI());
log.info("Method : {}", request.getMethod());
log.info("Headers : {}", request.getHeaders());
log.info("Request body: {}", new String(body, UTF_8));
log.info("==========================request end================================================");
}
private void traceResponse(ClientHttpResponse response) throws IOException {
StringBuilder inputStringBuilder = new StringBuilder();
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getBody(), UTF_8))) {
String line = bufferedReader.readLine();
while (line != null) {
inputStringBuilder.append(line);
inputStringBuilder.append(LINE_BREAK);
line = bufferedReader.readLine();
}
}
log.info("============================response begin==========================================");
log.info("Status code : {}", response.getStatusCode());
log.info("Status text : {}", response.getStatusText());
log.info("Headers : {}", response.getHeaders());
log.info("Response body: {}", inputStringBuilder);
log.info("=======================response end=================================================");
}
}
好吧,所以我使用了以下丑陋的代码:
uploader.bind('Refresh', function(up) {
$('#'+up.settings.container + ' > div').css('left',0);
$('#'+up.settings.container + ' > div').css('top',0);
$('#'+up.settings.container + ' > div').css('width','100%');
$('#'+up.settings.container + ' > div').css('height','100%');
$('#'+up.settings.container + ' > form').css('left',0);
$('#'+up.settings.container + ' > form').css('top',0);
$('#'+up.settings.container + ' > form').css('width','100%');
$('#'+up.settings.container + ' > form').css('height','100%');
$('#'+up.settings.container + ' > div').children().css('left',0);
$('#'+up.settings.container + ' > div').children().css('top',0);
$('#'+up.settings.container + ' > div').children().css('width','100%');
$('#'+up.settings.container + ' > div').children().css('height','100%');
$('#'+up.settings.container + ' > div').children().css('font-size','20px');// default is 999px, which breaks everything in firefox
})
耶!它适用于 flash、htm5、htm4 runimes,并在 Chrome、Firefox、IE7、IE9 上进行了测试。垫片终于就位了。
我发现我的问题不是很聪明 - 我只是下载了源文件并打开了一个包含它们的新项目。一切都编译得很好。
I have found out my question wasn't very smart - I just downloaded the source files and opened a new project containing them. Everything compiled fine.
适用于 Windows 的 laspack视觉工作室?