提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2020-09-29 10:08:59.703|阅读 710 次
概述:本文将为希望使用Blazor WebAssembly和Dynamsoft JavaScript Barcode SDK构建Web条形码阅读器应用程序的Web开发人员提供帮助。
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
相关链接:
Dynamsoft Barcode Reader SDK一款多功能的条码读取控件,只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序。这可以节省数月的开发时间和成本。能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。使用Dynamsoft Barcode Reader SDK,你可以创建强大且实用的条形码扫描仪软件,以满足你的业务需求。
点击下载Dynamsoft Barcode Reader最新版
Blazor是Microsoft开发的Web框架。它使开发人员可以使用C#和HTML创建Web应用程序。但是,在开发Blazor项目时不可避免地调用现有的JavaScript API。本文将为希望使用Blazor WebAssembly和Dynamsoft JavaScript Barcode SDK构建Web条形码阅读器应用程序的Web开发人员提供帮助。
Blazor提供了两个模板,Blazor WebAssembly和Blazor Server。
Blazor服务器
在Blazor WebAssembly项目中调用Dynamsoft JavaScript条形码API
使用Blazor WebAssembly模板创建Blazor应用程序:
dotnet new blazorwasm -o BlazorBarcodeSample然后向项目添加一个新页面:
cd BlazorBarcodeSample dotnet new razorcomponent -n BarcodeReader -o Pages之后,将BarcodeReader属性添加到Pages / Index.razor:
@page "/" <h1>Hello, world!</h1> Welcome to your new app. <SurveyPrompt Title="How is Blazor working for you?" /> <BarcodeReader />到目前为止,我们可以运行该应用程序并查看主页:
dotnet run
Web浏览器将获取并缓存一个dotnet.wasm文件和一些* .dll文件。
我们可以通过添加<button>和<p>元素对UI进行一些更改。@page "/" <h1>Blazor Barcode Sample</h1> <BarcodeReader />BarcodeReader.razor:
@page "/barcodereader"
<button class="btn btn-primary" >Read Barcodes from Files</button>
<p style="color:green;font-style:italic">@result</p>
@code {
private static String result = "No Barcode Found";
}
重新运行该应用以查看UI更改:

下一步是为应用程序提供条形码扫描功能。
将Dynamsoft JavaScript条形码SDK添加到wwwroot / index.html,然后创建一个jsInterop.js文件以实现JavaScript和.NET之间的互操作:<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>BlazorBarcodeSample</title>
<base href="/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<script src="//cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@7.6.0/dist/dbr.js" data-productKeys="LICENSE-KEY"></script>
</head>
<body>
<script src="_framework/blazor.webassembly.js"></script>
<script src="jsInterop.js"></script>
</body>
</html>
打开jsInterop.js。添加以下代码以初始化Dynamsoft Barcode Reader:var barcodereader = null;
(async () => {
barcodereader = await Dynamsoft.BarcodeReader.createInstance();
await barcodereader.updateRuntimeSettings('balance');
let settings = await barcodereader.getRuntimeSettings();
barcodereader.updateRuntimeSettings(settings);
})();
为了与.NET进行交互,我们可以使用JavaScript变量来存储.NET对象的引用:var dotnetRef = null;
window.jsFunctions = {
init: function(obj) {
dotnetRef = obj;
},
};
为了将.NET对象引用传递给JavaScript,请注入JavaScript运行时并重写BarcodeReader.razor中的OnInitialized()方法 :
@inject IJSRuntime JSRuntime
@code {
private static String result = "No Barcode Found";
protected override void OnInitialized()
{
JSRuntime.InvokeVoidAsync("jsFunctions.init", DotNetObjectReference.Create(this));
}
}
<button class="btn btn-primary" @onclick="ReadBarcodes">Read Barcodes from Files</button>
@code {
private static String result = "No Barcode Found";
protected override void OnInitialized()
{
JSRuntime.InvokeVoidAsync("jsFunctions.init", DotNetObjectReference.Create(this));
}
public async Task ReadBarcodes()
{
await JSRuntime.InvokeVoidAsync(
"jsFunctions.selectFile");
}
}
同时,创建一个.NET函数以从JavaScript接收条形码解码结果:[JSInvokable]
public void ReturnBarcodeResultsAsync(String text)
{
result = text;
this.StateHasChanged();
}
不要忘记使用StateHasChanged()刷新UI。
这是JavaScript实现:window.jsFunctions = {
init: function(obj) {
dotnetRef = obj;
},
selectFile: function () {
let input = document.createElement("input");
input.type = "file";
input.onchange = async function () {
let file = input.files[0];
try {
await barcodereader.decode(file).then((results) => {
let txts = [];
try {
for (let i = 0; i < results.length; ++i) {
txts.push(results[i].BarcodeText);
}
let barcoderesults = txts.join(', ');
if (txts.length == 0) {
barcoderesults = 'No barcode found';
}
console.log(barcoderesults);
if (dotnetRef) {
dotnetRef.invokeMethodAsync('ReturnBarcodeResultsAsync', barcoderesults);
}
} catch (e) {
}
});
} catch (error) {
alert(error);
}
};
input.click();
},
};
现在,我们可以使用一些条形码图像来测试Blazor WebAssembly应用程序。

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn
文章转载自:



在嵌入式软件测试领域,对交叉编译代码进行单元测试是一大挑战。Parasoft C/C++test作为专业的C/C++测试工具,能够与劳特巴赫Trace32调试器深度集成。下面会详细介绍如何在C++test中配置Trace32调试器,实现对PowerPC架构程序的单元测试,涵盖环境设置、项目导入到测试执行的全过程。
本文将为大家介绍如何使用DevExpress WinForms数据网格控件实现摘要文本的格式化,欢迎下载最新版组件体验!
Parasoft C/C++test作为一款功能强大的自动化测试工具,为嵌入式开发提供了全面的测试解决方案。特别是在CCS开发环境中,C++test能够无缝集成,为F2812等DSP项目提供专业的单元测试支持。下面将介绍如何在CCS3环境下配置和使用C++test进行F2812项目的单元测试。
在嵌入式开发中,尤其是基于ARM架构的安全关键领域,单元测试是验证代码在目标硬件上运行时行为正确性的关键环节,对于保障最终产品的可靠性至关重要。下面将介绍如何利用Parasoft C/C++test开展单元测试,包括配置、执行及解决可能遇到的许可证问题,完成从静态检查到动态运行的完整测试闭环。
相关产品
Dynamsoft Barcode Reader SDK是一款多功能的条码读取控件。
最新文章 MORE
永利最大(官方)网站相关的文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@hmdbvip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
永利最大(官方)网站 