Generar y reconocer códigos de barras en AWS Lambda
Categoría del blog: Barcode ; .NET
22.05.2020
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: Amazon.Lambda.Core.LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] namespace AWSLambda1 { public class Function { /// <summary> /// Default constructor. This constructor is used by Lambda to construct the instance. When invoked in a Lambda environment /// the AWS credentials will come from the IAM role associated with the function and the AWS region will be set to the /// region the Lambda function is executed in. /// </summary> public Function() { } /// <summary> /// This method is called for every Lambda invocation. This method takes in an SQS event object and can be used /// to respond to SQS messages. /// </summary> public async System.Threading.Tasks.Task FunctionHandler(Amazon.Lambda.SQSEvents.SQSEvent evnt, Amazon.Lambda.Core.ILambdaContext context) { foreach (var message in evnt.Records) { await ProcessMessageAsync(message, context); } } private async System.Threading.Tasks.Task ProcessMessageAsync(Amazon.Lambda.SQSEvents.SQSEvent.SQSMessage message, Amazon.Lambda.Core.ILambdaContext context) { context.Logger.LogLine($"Processed message {message.Body}"); try { // create memory stream, where image with barcode will be stored using (System.IO.MemoryStream mem = new System.IO.MemoryStream()) { // create the barcode writer Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter(); // specify that DataMatrix barcode must be created barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.DataMatrix; // specify the barcode value barcodeWriter.Settings.Value = "1234567890987654321"; // generate barcode image and save to the memory stream as PNG file barcodeWriter.SaveBarcodeAsImage(mem, Vintasoft.Barcode.BarcodeImageFormat.Png); // create the barcode reader using (Vintasoft.Barcode.BarcodeReader barcodeReader = new Vintasoft.Barcode.BarcodeReader()) { // specify that reader must search for DataMatrix barcodes barcodeReader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.DataMatrix; // specify that reader must search horizontal barcodes only barcodeReader.Settings.ScanDirection = Vintasoft.Barcode.ScanDirection.Horizontal; // read barcodes from image Vintasoft.Barcode.IBarcodeInfo[] infos = barcodeReader.ReadBarcodes(mem); // if barcodes are not detected if (infos.Length == 0) { context.Logger.LogLine($"No barcodes found."); } // if barcodes are detected else { // get information about searched barcodes for (int i = 0; i < infos.Length; i++) { Vintasoft.Barcode.IBarcodeInfo info = infos[i]; context.Logger.LogLine(string.Format("Barcode: Type={0}, Value={1}", info.BarcodeType, info.Value)); } } } } } catch (System.Exception ex) { context.Logger.LogLine(string.Format("Error: {0}", ex.Message)); } await System.Threading.Tasks.Task.CompletedTask; } } }